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

#include <stdio.h>

int a, b;
int main(void)
{
long n;
long sum( long n);

while(scanf("%d%d%ld", &a, &b, &n) == 3&&(a != 0||b != 0||n != 0))
{
printf("%ld\n", sum(n));
}

return 0;
}

long sum( long n)
{
if(n == 1||n == 2)
return 1;
else
return (a*sum(n - 1) + b*sum(n - 2))%7;
}
别的方法还没有想到啊!

这个肯定会超时.


倚天照海花无数,流水高山心自知。
2006-11-16 23:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用我不是郭靖在2006-11-16 21:20:34的发言:

是不是帖子放的太高,大家没看到呢?

以前有小字报.那就取消置顶吧,看看帖子会不会沉下去.


倚天照海花无数,流水高山心自知。
2006-11-16 23:22
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 

int a,b;

int f(long n)
{
int p,q,r,i;
p=q=1;
if(n==1||n==2)
return 1;
else
{
for(i=3;i<=n;i++)
{
r=(a*p+b*q)%7;
p=q,q=r;
if(p==1&&q==1&&i>3)
return f((n%(i-2))==0?i-2:n%(i-2));
}
return r;
}
}

main()
{
long n;
while(scanf("%d %d %ld",&a,&b,&n)&&a!=0&&b!=0&&n!=0)
{
a%=7;b%=7;
printf("f(%ld)=%d\n",n,f(n));
}
}
这个应该是合格的了


2006-11-17 10:54
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 
还是有一点问题,A被7整除时时间会比较长,我再想想

2006-11-17 11:11
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 

#include <stdio.h>
int a,b;

int f(long n)
{
int p,q,r,i;
p=q=1;
if(n==1||n==2)
return 1;
else if(a==0&&b==0)
return 0;
else
{
for(i=3;i<=n;i++)
{
r=(a*p+b*q)%7;
p=q,q=r;
if(i>3&&p==1&&q==1)
return f((n%(i-2))==0?i-2:n%(i-2));
else if(i>3&&a==0&&q==1)
return f((n-1)%(i-2)==0?i-1:(n-1)%(i-2)+1);
}
return r;
}
}

main()
{
long n;
while(scanf("%d %d %ld",&a,&b,&n)&&(n!=0||a!=0||b!=0))
{
a%=7,b%=7;
printf("f(%ld)=%d\n",n,f(n));
}
}
稍微改了一点,增加了几个条件判断

[此贴子已经被作者于2006-11-17 12:12:31编辑过]


2006-11-17 11:24
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 

第2题的,如果使用math.h库函数的话,更简单,不知道合不合要求
#include <stdio.h>

unsigned long g1(unsigned long n)
{
return n*n;
}

unsigned long g2(unsigned long n)
{
return n*(n+1);
}

int f(long d)
{
long i=0;
if(d==0)
return 0;
while(!(d>g1(i)&&d<=g1(i+1)))
{
i++;
}
if(d>g2(i))
return 2*(i+1)-1;
else
return 2*i;
}

main()
{
long a,b;
while(scanf("%ld %ld",&a,&b)&&a>=0&&b>=a&&b<2147483648)
{
printf("%d\n",f(b-a));
}
}


2006-11-17 14:31
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

一般来说用递归都会超时.
既然楼上已经有递归式,那么改成递推或非递归会好一点.


倚天照海花无数,流水高山心自知。
2006-11-18 14:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

今天星期六,我把自己写的贴上来.

#include<stdio.h>
#define N 100
long count[N];
long is_in(long a[],long n)
{
long j;
for(j=n-1;j>=2;j--)
if(a[j]==a[n]&&a[j-1]==a[n-1])
return(n-j);
return(0);
}

int main()
{
#ifdef ONLINE_JUDGE
freopen ("Number Sequence.txt","r",stdin);
#endif
long n;
long a,b,i,t,d;
while(EOF!=(scanf("%ld%ld%ld",&a,&b,&n))&&!(a==0&&b==0&&n==0))
{
i=3;
count[1]=1;
count[2]=1;
while(1)
{
count[i]=(a*count[i-1]+b*count[i-2])%7;
t=is_in(count,i);
if(t!=0)
break;
i++;
}
i=i-t-1;
if(i>n)
printf("%ld\n",count[n]);
else
{
d=(n-i)%t;
if(d==0)
d=d+t;
d=d+i;
printf("%ld\n",count[d]);
}
}
return(0);
}


倚天照海花无数,流水高山心自知。
2006-11-18 15:01
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

steps


#include<stdio.h>

int main()
{
#ifndef ONLINE_JUDGE
freopen ("steps.txt","r",stdin);
#endif
long n1,n2,sum;
int i,j,flag;
while(EOF!=(scanf("%ld%ld",&n1,&n2)))
{
i=1;
sum=0;
flag=0;
j=0;
while((n2-n1)>sum)
{
sum=sum+i;
flag++;
if(flag==2)
{
i++;
flag=0;
}
j++;
}
printf("%d\n",j);
}
return(0);
}


倚天照海花无数,流水高山心自知。
2006-11-18 15:02
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
汗,的确是高了.我没看到.呵呵~而且现在上网机会有点少.一般什么时候贴出来呀?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-18 15:21
快速回复:[讨论]第一期题目
数据加载中...
 
   



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

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