大佬sos 2023-09-27 19:16 采纳率: 76.9%
浏览 17
已结题

c语言另类Fibonacci数列

有一数字序列定义如下:
f(1)=1,f(2)=1,f(n)=(a∗f(n−1)+b∗f(n−2))mod7
给定a,b和n,要求你写一个程序求f(n)的值。
输入格式:

输入包含多组测试用例,每个测试用例写在一行上包含3个整数a,b和n(1<=a,b<=100,1<=n<=100,000,000)。三个零表示输入结束,并且不处理该测试用例。

输出格式:

对于每个测试用例,在一行上输出f(n)的值。

输入样例:

1 1 3
1 2 10
0 0 0
输出样例:

2
5
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-27 21:49
    关注

    引自免费微信小程序-皆我百晓生,希望对题主有所帮助,如有帮助,还望采纳。


    这是一个求解另类Fibonacci数列的问题,根据给定的递推关系式计算序列中第n个数的值。你可以使用C语言编写程序来解决这个问题。下面是一个可能的实现:

    #include<stdio.h>
    
    int fibonacci(int a, int b, int n) {
        int f[n+1];
        f[1] = f[2] = 1;
    
        for(int i = 3; i <= n; i++) {
            f[i] = (a * f[i-1] + b * f[i-2]) % 7;
        }
    
        return f[n];
    }
    
    int main() {
        int a, b, n;
    
        while(1) {
            scanf("%d %d %d", &a, &b, &n);
            if(a == 0 && b == 0 && n == 0) {
                break;
            }
    
            int result = fibonacci(a, b, n);
            printf("%d\n", result);
        }
    
        return 0;
    }
    

    在这个程序中,使用了一个数组f来保存每个位置的值,然后从第3个位置开始使用递推关系式计算每个位置的值,直到计算到第n个位置为止。最后返回第n个位置的值。

    在main函数中,通过循环读取多组输入,当输入的a、b和n都为0时退出循环。然后调用fibonacci函数计算并输出结果。

    将上述代码保存为一个.c文件,然后使用C编译器编译并运行。输入多组测试用例,每个测试用例占一行,以输入0 0 0结束,程序会输出每个测试用例的f(n)的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 已采纳回答 9月27日
  • 创建了问题 9月27日

悬赏问题

  • ¥30 靶向捕获探针设计软件包
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集