794046 | 长木 | 关于521 | ![]() |
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