| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9893 人关注过本帖
标题:[讨论]第一期题目
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

楼上的一定超时,改进下.


倚天照海花无数,流水高山心自知。
2006-11-12 14:30
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
我直接就这样用公式写了,没注意到值的限制。是不该这么简单的哦。

由于工作,N久都没来了!
2006-11-12 14:32
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 

用数组递推,应该不会超时.


2006-11-12 14:33
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
呵呵,这道题要找规律的.应该没有表面一看就知道怎么做的.
要不然给出递归式,直接用递归,那谁都会的.

倚天照海花无数,流水高山心自知。
2006-11-12 14:36
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
大家细心点,这些题目都不会太直接.反正有一个星期的时间,慢慢来.
做的多自然会顺手.大家觉得自己的代码在本地测试通过了的话,并且效率可以,就贴上来,我会帮大家测试一下.
不过现在我得下了,大概晚上会上来看看.
大家加油啊

倚天照海花无数,流水高山心自知。
2006-11-12 14:53
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 

#include<stdio.h>

int main()
{
int f1=1,f2=1,f=0;
int A=0,B=0,n=1,i=0;
for(;;)
{
scanf("%d%d%d",&A,&B,&n);
A=A%7;B=B%7;
if((A==0)&&(B==0)&&(n==0))break;
else if(n==1||n==2) f=f1;
else
for(i=3;i<=n;i++)
{
f=(A*f2+B*f1)%7;
f1=f2;f2=f;
}
printf("%d\n",f);
}
return 0;
}
如何?


2006-11-12 15:02
guzhou
Rank: 1
等 级:新手上路
威 望:1
帖 子:247
专家分:0
注 册:2006-11-4
收藏
得分:0 
今天怎么没什么人?
题目还不错呀,双休日不做题?
先下了,望帮忙看下上面的程序

2006-11-12 15:55
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
#include<stdio.h>
int T[7][7];
int num[7][7][100];
void T_num()
{
int a,b,index,f1,f2,f,count;
for(a=0;a<7;a++)
for(b=0;b<7;b++)
{
f1=1;
f2=1;
index=0;
count=0;
if(a==0 || b==0)
{
while(1)
{
f=(a*f2+b*f1)%7;
if(index>0 && f==num[a][b][0])
break;
num[a][b][index++]=f;
f1=f2;
f2=f;
count++;
}
T[a][b]=count;
}
else
{
while(1)
{
f=(a*f2+b*f1)%7;
if(index>2 && f2==num[a][b][0] && f==num[a][b][1])
break;
num[a][b][index++]=f;
f1=f2;
f2=f;
count++;
}
T[a][b]=count-1;
}
}
}
int main()
{
int a,b;
long n;
T_num();
while(EOF!=scanf("%d%d%ld",&a,&b,&n))
{
if(a==0 && b==0 && n==0)
break;
if(n==1 || n==2)
{
printf("1\n");
continue;
}
a%=7;
b%=7;
printf("%d\n",num[a][b][(n-3)%T[a][b]]);
}
return 0;
}

2006-11-12 16:14
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
以下是引用guzhou在2006-11-12 15:02:14的发言:

#include<stdio.h>

int main()
{
int f1=1,f2=1,f=0;
int A=0,B=0,n=1,i=0;
for(;;)
{
scanf("%d%d%d",&A,&B,&n);
A=A%7;B=B%7;
if((A==0)&&(B==0)&&(n==0))break;
else if(n==1||n==2) f=f1;
else
for(i=3;i<=n;i++)
{
f=(A*f2+B*f1)%7;
f1=f2;f2=f;
}
printf("%d\n",f);
}
return 0;
}
如何?

这个肯定超时,n最大可以到1亿
还有int n;改为long n;


2006-11-12 16:16
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
#include<stdio.h>
#include<math.h>
#define M 1000
int main()
{
int x,y,n,t,sq,i;
int X[M],Y[M];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&X[i],&Y[i]);
for(i=0;i<n;i++)
{
x=X[i];
y=Y[i];
t=y-x;
if(t==0)
printf("0\n");
else
{
sq=(int)sqrt(t);
if(sq*sq==t)
printf("%d\n",2*sq-1);
else if(t>(sq+1)*(sq+1)-(sq+1))
printf("%d\n",2*(sq+1)-1);
else
printf("%d\n",2*(sq+1)-2);
}
}
return 0;
}

2006-11-12 17:10
快速回复:[讨论]第一期题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037761 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved