| 794046 | 长木 | 关于521 | Accepted |
116 | 8044 | C/C++ | 04-03 08:23:16 |
#include <cstdio>
#include <cstring>
#define MAX 1000000 + 2
int anger[MAX], anger2[MAX];
char str[10];
void intToString(int n){
int i = 0, t;
while(n){
str[i++] = n % 10 + ‘0‘;
n /= 10;
}
str[i] = ‘\0‘;
//注意是倒置的
}
int strCmp(){
if(strstr(str, "125")) return 2;
if(strchr(str, ‘1‘) && strchr(str, ‘2‘ ) && strchr(str, ‘5‘))
return 1;
return 0;
}
int main(){
int i, j = 1, t;
for(i = 125; i != MAX; ++i){
intToString(i);
t = strCmp();
switch(t){
case 1: anger[i] = anger[i - 1] + 1;
anger2[i] = anger2[i - 1]; break;
case 2: anger[i] = anger[i - 1] + 1;
anger2[i] = anger2[i - 1] + 1; break;
default : anger[i] = anger[i - 1];
anger2[i] = anger2[i - 1]; break;
}
}
while(scanf("%d%d", &i, &t) == 2)
printf("Case %d:%d %d\n", j++, anger[t] - anger[i - 1],
anger2[t] - anger2[i - 1]);
return 0;
} 原文:http://blog.csdn.net/chang_mu/article/details/22897463