| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1117 人关注过本帖
标题:请大牛们指教怎样用malloc函数解决杭电1005
只看楼主 加入收藏
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请大牛们指教怎样用malloc函数解决杭电1005
题目:顺便AC一下
Problem Description
A number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).

 

Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.

 

Output
For each test case, print the value of f(n) on a single line.

 

Sample Input
1 1 3
1 2 10
0 0 0
 

Sample Output
2
5

搜索更多相关主题的帖子: malloc 函数 指教 
2010-07-22 15:44
赵本山
Rank: 2
等 级:论坛游民
帖 子:34
专家分:47
注 册:2010-7-4
收藏
得分:0 
这种高深的问题你得问。。哎。不会。
2010-07-22 17:38
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:15 
#include <stdio.h>

int main(void)
{
   int a,b,i;
 long int f[49],n;

 while (scanf("%d%d%ld",&a,&b,&n)!=EOF)
  {
   if (!(a+b+n)) break;
   
   f[0]=f[1]=1;
   for (i=2; i<49; i++) {
      f[i]=(a*f[i-1]+b*f[i-2])%7;
   }
   printf("%d\n",f[(n)%48-1]);
  }

}

欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-22 18:13
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用sunyh1999在2010-7-22 18:13:56的发言:

#include

int main(void)
{
   int a,b,i;
 long int f[49],n;

 while (scanf("%d%d%ld",&a,&b,&n)!=EOF)
  {
   if (!(a+b+n)) break;
   
   f[0]=f[1]=1;
   for (i=2; i<49; i++) {
      f=(a*f+b*f)%7;
   }
   printf("%d\n",f[(n)%48-1]);
  }

}

说句实话,我不相信这是你做出来的。

你能告诉我为什么for (i=2; i<49; i++) 这里是49?
2010-07-22 18:39
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
收藏
得分:5 
用递归实现了一遍。不知是否符合要求。
int x = 0;
int y = 0;
int f(int n)
{
    if(n == 1 || n == 2)
        return 1;
    else
    {
        return (x * f(n -1) + y * f(n - 2)) % 7;
    }
}
int main(int argc, char **argv)
{
    int n = 0;
    while(scanf("%d%d%d", &x, &y, &n) != EOF)
    {
        if(!(x + y + n))
            break;
        printf("%d\n", f(n));
    }
    system("pause");
}
2010-07-22 19:34
LSYHEFENG
Rank: 2
等 级:论坛游民
帖 子:112
专家分:71
注 册:2010-7-17
收藏
得分:0 
呵呵,我也想知道
2010-07-22 19:40
yjchaos
Rank: 2
等 级:论坛游民
帖 子:16
专家分:36
注 册:2010-7-4
收藏
得分:0 
大家可以编个程看一下,在a,b赋值的情况下输出f[0]到[95],发现这个结果是以周期为48重复的,所以f[n]=f[(n-1)%48],源程序这里ms有点小错误(如果n输入48,输出多少呢),综上,我们只要求出f[0]到[47]的值就可以了,所以我决得这里i应该是小于48而不是49,个人看法,若有错误,还望指出,大家一起探究
2010-07-22 22:10
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
从特殊到一般,是人类最传统的解决问题之道~~ 果然还挺王道~~
2010-07-23 01:06
快速回复:请大牛们指教怎样用malloc函数解决杭电1005
数据加载中...
 
   



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

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