首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

Zoj2965 WrongAnswer求解,该如何解决

2012-02-29 
Zoj2965 WrongAnswer求解C/C++ code#includestdio.h#includestring.h#define max 800long seven(long

Zoj2965 WrongAnswer求解

C/C++ code
#include"stdio.h"#include"string.h"#define max 800                                   long seven(long x){    long i,j,a[max],z=1,count=0;    for(i=1;i<max;i++)                                     if(i%7==0||i/100==7||i/10%10==7||i%10==7)      {           count++;                                           a[j]=i;          j++;       }            if(x==1)                                               {    printf("7\n");                                       return 0;        }                                     for(j=2;j<=count;j++)                                                        {                    if(a[j]-a[j-1]==1)                                                              z++;                                                                           else                                                   z=1;           if(z==x)                                                                      {           printf("%d\n",a[j-x+1]);                               return 0;                                           }                                        }}int main(){    long t,r,u;    scanf("%d",&t);    if(t<1||t>100)    return 0;    for(r=0;r<t;r++)    {    scanf("%d",&u);    seven(u);    }}


[解决办法]
#include <stdio.h>
#define max 800
#define YES 1
#define NO 0
long seven( long p );

void main(void){
long n; /*测试几次*/
long m; /*有几个连续的CocaCola*/
long i;
long j; /*从几开始连续的,就是所求的结果*/
scanf("%ld",&n);
for( i = 0; i < n; i++ ){
scanf("%ld",&m);
j = seven( m );
printf("the %ld test: %ldCoca cola begin with %ld\n",i + 1, m, j);
}
}

long seven( long p ){
long i;
long num = 0; /*记录连续到第几个了*/
long hascons = NO; /*标识开始连续与否*/
for( i = 1; i < max; i++ ){
if( i % 7 == 0 || i / 100 == 7 || i % 100 / 10 == 7
|| i % 100 % 10 == 7 ){ /*判断是否为带7数*/
if(hascons == NO)
hascons = YES;
if(hascons == YES)
if( ++num == p )
return i - p + 1;
}
else{ /*没连续成重置,重新计数*/
hascons = NO;
num = 0;
}
}
return -1;
}

热点排行