题目链接
既然题目规定范围(0<a,b<1000000)那么我们就可以将其范围内的符合条件的数字计算出来,之后根据你所输入的数字,来打印即可
代码如下
#include<stdio.h>
int s[2][1000001]={0};
int main()
{
int a,b,i;
int j=0,k=0;
for(i=125;i<1000000;i++)
{
if((i%10==1||(i/10)%10==1||(i/100)%10==1||(i/1000)%10==1||(i/10000)%10==1||(i/100000)==1)
&&(i%10==2||(i/10)%10==2||(i/100)%10==2||(i/1000)%10==2||(i/10000)%10==2||(i/100000)==2)
&&(i%10==5||(i/10)%10==5||(i/100)%10==5||(i/1000)%10==5||(i/10000)%10==5||(i/100000)==5)) //判断每一位有没有5,2,1
j++;
if(i/1000==521||i%1000==521||(i/10)%1000==521||(i/100)%1000==521) // 特别愤怒
k++;
s[0][i]+=j; //愤怒数
s[1][i]+=k; //特别愤怒
}
i=0;
while(~scanf("%d%d",&a,&b))
{
printf("Case %d:%d %d\n",++i,s[0][b]-s[0][a-1],s[1][b]-s[1][a-1]);
}
return 0;
}