两个错误。
1 我从题目上貌似没有看到STEP必然小于MOD,所以STEP要先对MOD取余(但打印时还是要打印输入的值)
2 你的memset的第三个参数不对,要乘以sizeof(int)
我改了下可以ac了
#include
#include
#include
using namespace std;
int a[100001];
int main()
{
int step,mod,i,t,input_step;
while (cin>>input_step>>mod)
{
step = input_step % mod;
memset(a,0,mod*sizeof(int));
a[0]=a[step]=1;
for (t=step,i=2;i
t=(t+step)%mod;
if(a[t])
break;
else
a[t]=1;
}
cout<
cout<<" Good Choice"<
cout<<" Bad Choice"<
}
memset(a,0,m); 你这个应用 有问题 memset( a , 0 , sizeof( a )); 建议你这样写
#include
#include
int main(){
int Step , MOD ;
int i , Num , Temp;
while(scanf("%d %d",&Step,&MOD)!=EOF){
int Seed[100000] = {0};
Temp = 1;
Num = 0;
Seed[ MOD ] = 0;
while( Temp ) {
Temp = ( Num + Step )%MOD;
Seed[ Temp ] = Temp;
Num = Temp;
}
i = 1;
while( Seed[ i++ ] );
if( i == MOD + 1 ) printf("%10d%10d Good Choice\n\n",Step,MOD);
else printf("%10d%10d Bad Choice\n\n",Step,MOD);
}
return 0;
} 这是我的AC代码