关于521
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去。
浏览网页的流年忽然看到了网上有人用玫瑰花瓣拼成了521三个数字,顿时觉得好浪漫,因为每个男生都会不经意的成为浪漫的制造者。此后,流年走到哪里都能看到5、2、1三个数字,他怒了,现在他想知道在连续的数中有多少数全部包含了这三个数字。例如12356就算一个,而5111就不算。特别的,如果他看到了521三个数连续出现,会特别的愤怒。例如35210。
输入
多组测试数据:
一行给定两个数a,b(0
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf -0x3f3f3f3f
#define mem0(a) memset(a,0,sizeof(a))
int b[1000000+10];
int c[1000000+10];
int main()
{
mem0(b);
mem0(c);
for(int i = 125; i <=1000000+1;i++){
int mm = i ;
int t = 0 ,tt= 0, ttt = 0;
while(mm){
if(mm%1000==521){
c[i]=c[i-1]+1;
b[i]=b[i-1]+1;
break;
}
int cc= mm%10;
if(cc==1)
t++;
else if (cc==5)
tt++;
else if(cc==2)
ttt++;
if(t&&tt&&ttt)
b[i]=b[i-1]+1;
else{
c[i]=c[i-1];
b[i]=b[i-1];
}
mm/=10;
}
}
int x,y,z=1;
while(scanf("%d%d",&x,&y)!=EOF){
printf("Case %d:%d %d\n",z++,b[y]-b[x-1],c[y]-c[x-1]);
}
return 0;
}