我做模擬題是一向不行的 這道題搞了我m久 發(fā)現(xiàn)我對(duì)數(shù)字真的是非常不敏感~
創(chuàng)新互聯(lián)堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨嚒N覀儚牟缓鲇瞥踉L客戶,我們用心做好本職工作,不忘初心,方得始終。10年網(wǎng)站建設(shè)經(jīng)驗(yàn)創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營(yíng)銷服務(wù)商,為您提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、小程序開(kāi)發(fā)服務(wù),給眾多知名企業(yè)提供過(guò)好品質(zhì)的建站服務(wù)。只是解決了small data而已 large data模擬肯定是不行的
這道題 有一個(gè)點(diǎn)我覺(jué)得很巧妙
而且終于將sprintf sscanf strncpy 用了一下 挺好用噠~
#include
#include
#include
using namespace std;
#define MAX 2000000
int vis[MAX];
int m,n;
int count( int num )
{
int val, i, sum = 0;
char tmp[10]={0}, head[10]={0}, str[10];
sprintf(str,"%d", num);
int len = strlen(str);
for( i=0; i num 簡(jiǎn)化了計(jì)算吶??! 就是循環(huán)得到的數(shù)比num小就忽略 因?yàn)榭隙ㄒ呀?jīng)加過(guò)了
// vis[val]!=num 是避免重復(fù)計(jì)算 題目要求 if( val>=m && val<=n && val>num && vis[val]!=num )
{
sum++, vis[val] = num;
}
}
return sum;
}
int main()
{
int nCase = 1, i, cas, tot;
freopen("./new.in", "r", stdin);
freopen("./new.out", "w", stdout);
scanf("%d", &cas);
while( cas-- )
{
tot= 0;
scanf("%d %d", &m, &n);
memset(vis,-1, sizeof(vis));
for( i=m; i<=n; i++ )
{
tot+= count(i);
}
printf("Case #%d: %d
", nCase++, tot);
}
return 0;
}