| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9891 人关注过本帖
标题:[讨论]第一期题目
只看楼主 加入收藏
jkmaple
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-1-15
收藏
得分:0 
上面的一位朋友做的没有问题,能够运行

2007-01-16 19:15
lico
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-15
收藏
得分:0 
f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

mod 7 什么意思?
2007-01-18 19:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
求余

倚天照海花无数,流水高山心自知。
2007-01-18 21:17
blackbrod
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-10-24
收藏
得分:0 

#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
static int steps=1;//如果这里定义0就会少一步长,仔细想了下,还是没明白
main()
{
int step1,step2,n,stepsnum;
int x=2;//现在开始要走2个步长以上的了
int number=2;//第一和最后步是为1的
printf("put the two steps\n");
scanf("%d%d",&step1,&step2);
n=abs(step1-step2);
printf("%d\n",n);
if ((n-2)==1)
{
printf("the need %d steps between %d and %d\n",3,step1,step2);
getch();
return 0;
}
if ((n-2)==2)
{
printf("the need %d steps between %d and %d\n",3,step1,step2);
getch();
return 0;
}
stepsnum=fun(number,x,n);
printf("the steps is %d",stepsnum);
getch();
}
int fun(int number,int x,int n)
{
number+=x;
if (number<n)
{
steps++;
fun(number,x+1,n);//把里面的number ,x的数据都带到下一关计算

}
return steps+2;
}

我运行了几次,应该是行的,不知道有什么地方遗漏,望高手指点下

2007-01-18 21:19
miaomiao0403
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-22
收藏
得分:0 

int fac(int a,int b,int n)
{ int f;
if((n==1)||(n==2))
f=1;
else
f=(fac(a,b,n-1)*a+fac(a,b,n-2)*b)%7;
return(f);
}
main()
{ int a,b,n;
while(scanf("%d %d %d",&a,&b,&n)&&(a||b||n))
{ printf("\n%d\n",fac(a,b,n));
}
}



2007-02-20 21:42
守望♂幸福
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2006-4-25
收藏
得分:0 

偶是偶滴偶像!!~ QQ:375490156
2007-02-20 22:26
miaomiao0403
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-22
收藏
得分:0 

为什么第一题用递归n大于1000不能运行,下面是我写的递推
int fac(int a,int b,long int n)
{ int f,p=1,q=1,i;
if(n==1||n==2)
f=1;
else
for(i=3;i<=n;i++)
{f=(a*p+b*q)%7;
q=p;p=f;
}
return(f);
}
main()
{ int a,b;
long int n;
while(scanf("%d %d %ld",&a,&b,&n)&&(a||b||n))
{ printf("\n%d\n",fac(a,b,n));
}
}



2007-02-23 18:38
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用miaomiao0403在2007-2-23 18:38:39的发言:

为什么第一题用递归n大于1000不能运行.
递归层数太多,使得堆栈溢出.和函数调用机制有关.


倚天照海花无数,流水高山心自知。
2007-03-10 16:14
jiangliangju
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-9
收藏
得分:0 

我个人认为这题目应该用递归作

2007-03-11 15:20
jiangliangju
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-3-9
收藏
得分:0 

这是我的代码#include"stdio.h"
int f(int a,int b,double n)
{
if(n==1||n==2)
return 1;
else return (a* f(a,b,n - 1) + b * f(a,b,n - 2))% 7;
}

int main()
{ int A,B,z;
double n;
while( scanf("%d %d %lf",&A,&B,&n)&&A!=0&&B!=0&&n!=0&&n>=1)
{ z=f(A,B,n);
if((1 <= A&& A<=1000)&&(1 <= B&& B<=1000)&& (1 <= n&& n<=100000000))
printf("%d\n",z);
}
system("pause");
}

2007-03-11 15:21
快速回复:[讨论]第一期题目
数据加载中...
 
   



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

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