您的位置:首页 > 其它

nyoj 975 关于521

2017-02-25 21:34 281 查看

关于521

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述
Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去。

浏览网页的流年忽然看到了网上有人用玫瑰花瓣拼成了521三个数字,顿时觉得好浪漫,因为每个男生都会不经意的成为浪漫的制造者。此后,流年走到哪里都能看到5、2、1三个数字,他怒了,现在他想知道在连续的数中有多少数全部包含了这三个数字。例如12356就算一个,而5111就不算。特别的,如果他看到了521三个数连续出现,会特别的愤怒。例如35210。

输入多组测试数据:

一行给定两个数a,b(0<a,b<1000000),表示数字的开始和结束。输出一行显示他想要知道的数有几个及显示有多少个数字令他特别的愤怒。用空格隔开。样例输入
200 500300 9001 600
样例输出
Case 1:2 0Case 2:2 1Case 3:6 1

第一次:

 #include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
int m,n,tot=0;
while(cin>>m>>n){
char a[10];
int i,j,k,l=0,z=0,x=0,y=0,t=0;
for(i=m;i<n;i++){
itoa(i,a,10);
z=0;x=0;y=0;
for(j=0;a[j]!='\0';j++){
if(a[j]=='5')
x=1;
if(a[j]=='2')
y=1;
if(a[j]=='1')
z=1;
//if(j<8){
if(a[j]=='5'&&a[j+1]=='2'&&a[j+2]=='1')
l++;
//}
}
if(x+y+z==3)
t++;
}
cout<<"Case "<<++tot<<":"<<t<<" "<<l<<endl;
}
return 0;
}
不能识别 itoa 心累

第二次: #include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
int m,n,tot=0;
while(scanf("%d %d",&m,&n)){
int a[10];
int i,j,k,l=0,z=0,x=0,y=0,t=0,b=0,c;
for(i=m;i<n;i++){
//itoa(i,a,10);
z=0;x=0;y=0;k=0;b=0;c=i;
while(c){
a[b++]=c%10;
c/=10;
}
for(j=0;j<b;j++){
if(a[j]==5)
x=1;
if(a[j]==2)
y=1;
if(a[j]==1)
z=1;
if(k==0&&j<b-2){
if(a[j]==1&&a[j+1]==2&&a[j+2]==5){
k=1;
++l;
}
}
}
if(x+y+z==3)
t++;
}
//cout<<"Case "<<++tot<<":"<<t<<" "<<l<<endl;
//tot++;
printf("Case %d:%d %d\n",++tot,t,l);
}
return 0;
}
超时

给的最佳代码:

#include<stdio.h>
int a
4000
[2][1000001]={0};
int main()
{
int k=0,i,sum=0;
for(i=1;i<=1000000;i++)
{
if((i%10==5||(i/10)%10==5||(i/100)%10==5||(i/1000)%10==5||(i/10000)%10==5||(i/100000)%10==5)&&(i%10==2||(i/10)%10==2||(i/100)%10==2||(i/1000)%10==2||(i/10000)%10==2||(i/100000)%10==2)&&(i%10==1||(i/10)%10==1||(i/100)%10==1||(i/1000)%10==1||(i/10000)%10==1||(i/100000)%10==1))
{sum++;
if(i/1000==521||(i/100)%1000==521||(i/10)%1000==521||i%1000==521)k++;}
a[0][i]+=sum;
a[1][i]+=k;
}
int m,n,w=0;
while(scanf("%d%d",&n,&m)!=EOF)
printf("Case %d:%d %d\n",++w,a[0][m]-a[0][n-1],a[1][m]-a[1][n-1]);
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: