鱼C论坛

 找回密码
 立即注册
查看: 1121|回复: 3

代码后面结果不对,不知道错哪里了

[复制链接]
发表于 2023-11-13 21:31:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求出它的第n项。
通项表达式如下:
F(1)=0
;
F(2)=1
;
F(n)=4∗F(n−1)−5∗F(n−2)
;

每个函数结果都需要对998244353取模。
#include <stdio.h>
#include<math.h>
int lml(int n)
{
    int n1=0,n2=1,n3;
   for(int i=3;i<=n;i++)
   {
      n3=(4*n2-5*n1)%998244353;
      n1=n2;
      n2=n3;
   }
    return n3;
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;i++)
    {
        int num;
        scanf("%d",&num);
        printf("%d\n",lml(num));
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-13 21:31:47 | 显示全部楼层
这段代码中存在一个小错误。在lml函数中,当i=3时,n1和n2的值分别为0和1,而n3的值却没有被赋初值。因此,需要在for循环之前初始化n3的值,例如将n3的初始值设为1。

修正后的代码如下:
#include <stdio.h>
#include<math.h>
int lml(int n)
{
    int n1=0,n2=1,n3=1; // 初始化n3的值为1
    for(int i=3;i<=n;i++)
    {
        n3=(4*n2-5*n1)%998244353;
        n1=n2;
        n2=n3;
    }
    return n3;
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int i=1;i<=T;i++)
    {
        int num;
        scanf("%d",&num);
        printf("%d\n",lml(num));
    }

    return 0;
}

这样就可以正确计算出第n项的值,并对998244353取模。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-13 21:33:15 | 显示全部楼层
你的代码看起来没有明显的错误。根据给定的通项表达式 F(n)=4*F(n-1)-5*F(n-2) 模 998244353,你在 lml 函数中正确地计算了第 n 项的值。可能有以下几个原因导致结果不正确:

1. 输入错误:请确保你在输入时没有出错,特别是对于变量 Tnum 的输入。
2. 数据溢出:由于取模操作 (4*n2-5*n1)%998244353 可能会产生较大的中间结果,因此请确保你的数据类型足够大以容纳这些中间结果。可以将 n1n2n3 声明为 long long 类型,以避免整数溢出问题。
3. 遗漏的边界条件:请检查你的代码是否正确处理了 n=1n=2 的特殊情况。

你可以尝试根据以上提示进行调试,并检查你的输入和输出是否符合预期。如果问题仍然存在,请提供更多详细信息,以便让我更好地帮助你解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-13 21:36:34 | 显示全部楼层
Mike_python小 发表于 2023-11-13 21:33
你的代码看起来没有明显的错误。根据给定的通项表达式 F(n)=4*F(n-1)-5*F(n-2) 模 998244353,你在 lml 函 ...

改了,但是第31项结果和代码运行的不一样,第31项结果是780510847
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 19:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表