标签:
Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去。
浏览网页的流年忽然看到了网上有人用玫瑰花瓣拼成了521三个数字,顿时觉得好浪漫,因为每个男生都会不经意的成为浪漫的制造者。此后,流年走到哪里都能看到5、2、1三个数字,他怒了,现在他想知道在连续的数中有多少数全部包含了这三个数字。例如12356就算一个,而5111就不算。特别的,如果他看到了521三个数连续出现,会特别的愤怒。例如35210。
200 500 300 900 1 600
Case 1:2 0 Case 2:2 1 Case 3:6 1
1 #include<stdio.h> 2 int num[2][1000001]={0}; 3 int main() 4 { 5 int a,b,i; 6 int j=0,k=0; 7 for(i=125;i<1000000;i++) 8 { 9 if((i%10==1||(i/10)%10==1||(i/100)%10==1||(i/1000)%10==1||(i/10000)%10==1||(i/100000)==1) 10 &&(i%10==2||(i/10)%10==2||(i/100)%10==2||(i/1000)%10==2||(i/10000)%10==2||(i/100000)==2) 11 &&(i%10==5||(i/10)%10==5||(i/100)%10==5||(i/1000)%10==5||(i/10000)%10==5||(i/100000)==5)) 12 j++; 13 if(i/1000==521||i%1000==521||(i/10)%1000==521||(i/100)%1000==521) 14 k++; 15 num[0][i]+=j; 16 num[1][i]+=k; 17 } 18 i=0; 19 while(~scanf("%d%d",&a,&b)) 20 { 21 printf("Case %d:%d %d\n",++i,num[0][b]-num[0][a-1],num[1][b]-num[1][a-1]); 22 } 23 return 0; 24 }
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int function1(int x) { int a[6],i,j; for(i=5;i>=0;i--) { a[i]=x%10; x/=10; } for(i=0;i<4;i++) { if(a[i]==5&&a[i+1]==2&&a[i+2]==1) return 1; } return 0; } int function2(int x) { int a[6],k=0,i,j; for(i=5;i>=0;i--) { a[i]=(x%10); x/=10; } for(i=0;i<6;i++) if(a[i]==5) { k++; break; } for(i=0;i<6;i++) if(a[i]==2) { k++; break; } for(i=0;i<6;i++) if(a[i]==1) { k++; break; } if(k==3) return 1; else return 0; } int m[1000000],n[1000000];/*吐一地血。。设成局部变量就WA,搞不懂!!!!*/ int main() { int a,b,i,u=0; int p=0,k=0,j=0; for(i=125;i<=1000000;i++) { if(function1(i)&&function2(i)) { u++; } m[i]+=u; if(function2(i)) { p++; } n[i]+=p; } n[0]=0; while(~scanf("%d%d",&a,&b)) { printf("Case %d:%d %d\n",++j,n[b]-n[a-1],m[b]-m[a-1]); } }
标签:
原文地址:http://www.cnblogs.com/a1225234/p/4532049.html