杭电ACM1005

杭电有没有用C语言写的,我的超时~~intf(intA,intB){inta,b,c,i;a=1;b=(A+B)%7;for(i=4;i<=100;i++){c=(A*b... 杭电有没有用C语言写的,我的超时~~int f(int A, int B) {
int a, b, c, i;
a = 1;
b = (A + B) % 7;
for(i = 4; i <= 100; i++) {
c = (A * b + B * a) % 7;
a = b;
if(c == 1 && a == 1) {
int T = i - 2;
return T;
}
b = c;
}
return 1;
}
int main() {
int A, B, n;
while(scanf("%d%d%d", &A, &B, &n) == 3) {
if(!A && !B && !n)
break;
int T = f(A, B);
arr[1] = arr[2] = 1;
int tmp = n % T;
for(int i = 3; i <= tmp; i++)
arr[i] = (A * arr[i - 1] + B * arr[i - 2]) % 7;
printf("%d\n", arr[tmp]);
}
return 0;
}
#include<stdio.h>
#include<math.h>
void main()
{
long int n;
int a,b;
int f(long int n,int a,int b);
while(scanf("%d%d%ld",&a,&b,&n)!=EOF)
{
if((a==0&&b==0&&n==0)||a<1||b>1000||n<1||n>100000000) break;
else printf("%d\n",f(n,a,b));
}
}
int f(long int n,int a,int b)
{ int fac;
if(n==1) return fac=1;
else if(n==2) return fac=1;
else return fac=((a*f(n-1,a,b)+b*f(n-2,a,b)))%7;
}这个才是我的
展开
 我来答
天堂鸟clz
2010-08-06 · 超过21用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:57.9万
展开全部
// 每个数据都走那么多肯定是TLE啦,这题是有周期的。
// 下面是我的AC代码
#include <stdio.h>
int main()
{
int a,b,n;
int f[201];
int i;
scanf("%d %d %d",&a,&b,&n);
while (a!=0||b!=0||n!=0)
{
f[1]=1;
f[2]=1;
if (n>=3)
{
for(i=3;i<200;i++)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
if ((f[i-1]==1)&&(f[i]==1))
{
break;
}
}
i=i-2;
n=n%i;
if (n==0)
{
n=i;
}
printf("%d\n",f[n]);
}
else
{
printf("1\n");
}
scanf("%d %d %d",&a,&b,&n);
}
return 0;
}
广州创蓝线缆科技
2024-11-07 广告
广州创蓝线缆科技有限公司是一家11年专注生产各种类型电子线的厂家,可按需定制生产各种类型、各种规格的电子线,包括:PCV排线、2651灰排线、2461蓝白排线、UL1571、1601、1015、1007电子线以及硅胶线等,支持小批量定制,量... 点击进入详情页
本回答由广州创蓝线缆科技提供
靖央捷颖馨
2019-07-26 · TA获得超过3885个赞
知道大有可为答主
回答量:3138
采纳率:28%
帮助的人:381万
展开全部
regular判断函数有问题
周期肯定存在,但不一定是从1
1开始
反例数据
121
21
100
你的代码结果,1
ac代码结果
4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式