有一个数列{an} , a0=1, ai+1=(A*ai+ai mod B) mod C,请你编程求出这个数列第一次出现重复的项的标号,如果答案超出2000000输出"-1"(不加引号)
#include<stdio.h>
int main()
{
int A,B,C,a[30];
int k=0,ans,panduan=1,j;
long long i;
scanf("%d%d%d",&A,&B,&C);
a[0]=1;
for(i=0;i<30;i++)
{
j=i+1;
a[i+1]=(A*a[i]+(a[i]%B))%C;
for(k=0;k<j;k++)
{
if(a[j]==a[k])
{
ans=j;
panduan=0;
break;
}
}
if(panduan==0)
break;
}
if(ans>2000000)
printf("-1");
printf("%d",ans);
return 0;
}
你这个i<=30,怎么会报错呢?到不了2000000呀
不清楚你的为什么会出问题,我这边运行任何数据都没有问题,你要不发下你测试得数据?
数组30的话 oj提示运行错误,改成2000000的话,我自己的程序都运行不了,改成2000000该如何修改程序呀