杭电1005 Number Sequence WA
2个回答
展开全部
貌似规律找得不对。 #include
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
n太大,不能暴力。
一般是找规律过的。。
贴下我丑陋的代码吧=。=
#include<stdio.h>
int main()
{
int a,b,n,i,c[10001];
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(a==0 && b==0 && n==0)
break;
c[1]=1;c[2]=1;
for(i=3;i<100;i++)
{
c[i]=(a*c[i-1]+b*c[i-2])%7;
if(c[i]==1 && c[i-1]==1)
break;
}
n=n%(i-2);
if(n==0)
printf("%d\n",c[i-2]);
else
printf("%d\n",c[n]);
}
}
。。。。。。。。。。。。。。。。。。。。。
正规的做法是矩阵乘法,没写过。
一般是找规律过的。。
贴下我丑陋的代码吧=。=
#include<stdio.h>
int main()
{
int a,b,n,i,c[10001];
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(a==0 && b==0 && n==0)
break;
c[1]=1;c[2]=1;
for(i=3;i<100;i++)
{
c[i]=(a*c[i-1]+b*c[i-2])%7;
if(c[i]==1 && c[i-1]==1)
break;
}
n=n%(i-2);
if(n==0)
printf("%d\n",c[i-2]);
else
printf("%d\n",c[n]);
}
}
。。。。。。。。。。。。。。。。。。。。。
正规的做法是矩阵乘法,没写过。
追问
我的代码见下:
#include
using namespace std;
int main()
{int A,B,n,i,f1,f2,f3,r[50],round; while(cin>>A>>B>>n&&(A||B||n)!=0) { r[0]=r[1]=f1=f2=1; for(i=2;i<n;i++) { f3=(A*f2+B*f1)%7; f1=f2; r[i]=f2=f3; if(f1==1&&f2==1) { round=i-1; f2=r[(n-1)%round]; break;}
} cout<<f2<<endl; } system("pause"); return 0; } 为什么过不了???咱俩规律差不多吧 跪求指点!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询