| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1259 人关注过本帖
标题:杭电1005
只看楼主 加入收藏
大秦嬴
Rank: 2
等 级:论坛游民
威 望:1
帖 子:31
专家分:31
注 册:2016-11-30
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:6 
杭电1005
#include <stdio.h>
int main()
{
    int f[1000];
    int i,a,b,n;
    while(scanf("%d%d%d",&a,&b,&n)!=EOF&&a&&b&&n)
    {
        for(i=2;i<n;i++)
        {
            f[0]=1;
            f[1]=1;
            f[i]=(a*f[i-1]+b*f[i-2])%7;
        }
        printf("%d\n",f[n-1]);
    }
    return 0;
}
提交之后是Runtime Error
(ACCESS_VIOLATION)
求大神指导
搜索更多相关主题的帖子: include 
2017-01-16 20:39
ICU
Rank: 4
等 级:业余侠客
威 望:2
帖 子:92
专家分:268
注 册:2017-1-14
收藏
得分:2 
可能不是程序本身的问题。在我的电脑上运行好好的。WinXP,VC6,Win32 console app
检查下编译环境吧
2017-01-16 21:01
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:3 
这道题具有规律性
 *           f(1)=a[1]=f(49)=a[49];
 *           f(2)=a[2]=f(50)=a[50];
 *             ............
程序代码:
#include <stdio.h>
int main()
{
    int f[1000];
    int i,a,b,n;
    while(scanf("%d%d%d",&a,&b,&n)!=EOF&&a&&b&&n)
    {
        for(i=3;i<=48;i++)
        {
            f[1]=1;
            f[2]=1;
            f[i]=(a*f[i-1]+b*f[i-2])%7;
        }
        n = n%48;
        printf("%d\n",f[n]); 
    } 
    return 0;
}

早知做人那么辛苦!  当初不应该下凡
2017-01-16 21:04
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:15 
连题目都不肯贴,还要每个人去网上重复搜索?

原始链接 http://acm.hdu.

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

错误很明显了
另外正如3楼所言,最大循环周期是7*7
2017-01-17 08:35
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
3楼说的并不全对,这是我做这道题的辅助过程,不用看懂,直接执行看打印结果

程序代码:
#include <stdio.h>

#define MAX  50
#define MOD  7

struct __tag_node
{
    int pre, rep;
    int data[MAX];
} sheet[MOD][MOD];

int getPos(int *sa, int size)
{
    for (int i = 0; i < size - 1; ++i)
    {
        if (sa[i] == sa[size - 1] && sa[i + 1] == sa[size]) return i;
    }
    return -1;
}

void init()
{
    for (int i = 0; i < 7; ++i)
    {
        for (int j = 0; j < 7; ++j)
        {
            sheet[i][j].pre = sheet[i][j].rep = 0;
            sheet[i][j].data[0] = sheet[i][j].data[1] = 1;
            for (int k = 2; k < MAX; ++k)
            {
                sheet[i][j].data[k] = (i * sheet[i][j].data[k - 1] + j * sheet[i][j].data[k - 2]) % MOD;
                sheet[i][j].pre = getPos(sheet[i][j].data, k);
                if (sheet[i][j].pre >= 0)
                {
                    sheet[i][j].rep = k - 1 - sheet[i][j].pre;
                    break;
                }
            }
            printf("[%d %d %d %2d] ", i, j, sheet[i][j].pre, sheet[i][j].rep);
            for (int k = 0; k < sheet[i][j].pre + sheet[i][j].rep + 2; ++k)
            {
                printf("%d ", sheet[i][j].data[k]);
            }
            printf("\n");
        }
    }
}

int main()
{
    init();
    return 0;
}


[此贴子已经被作者于2017-1-17 09:21编辑过]



[fly]存在即是合理[/fly]
2017-01-17 09:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:5 
回复 5楼 azzbcc
因为 f(1) 和 f(2) 没经过 (A*f(n-1)+B*f(n-2))%7 的洗礼,所以只要剔除它俩就行了。

程序代码:
#include <stdio.h>

// f(1)=1, f(2)=1, f(n)=(A*f(n-1)+B*f(n-2))%7
unsigned foo( unsigned a, unsigned b, unsigned n )
{
    unsigned f[50] = { (b+a)%7, (b+a*(b+a))%7 };
    unsigned len;
    if( n <= 2 ) return 1;
    for( len=1; f[len+1]=(a*f[len]+b*f[len-1])%7, f[len]!=f[0]||f[len+1]!=f[1]; ++len );
    return f[(n-3)%len];
}

int main( void )
{
    unsigned a, b, n;
    while( scanf("%u%u%u",&a,&b,&n)==3 && (a!=0 || b!=0 || n!=0) )
        printf( "%u\n", foo(a,b,n) );

    return 0;
}

收到的鲜花
  • azzbcc2017-01-17 16:57 送鲜花  10朵   附言:我很赞同
2017-01-17 12:26
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
能运行,上图
图片附件: 游客没有浏览图片的权限,请 登录注册


我是硬件工程师
2017-01-17 20:45
快速回复:杭电1005
数据加载中...
 
   



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

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