gpt4 book ai didi

c - 这段代码有什么问题?我是 CodeChef 新手,它说我的输出不正确

转载 作者:行者123 更新时间:2023-11-30 16:13:21 25 4
gpt4 key购买 nike

我是 CodeChef 的新手,正在解决 C 语言的初学者部分。我写了问题的代码=>

要求您计算一些小正整数的阶乘。

输入
一个整数t,1<=t<=100,表示测试用例的数量,后面是t行,每行包含一个整数n,1<=n<=100。

输出
对于输入中给定的每个整数 n,显示具有 n! 值的行。

我得到了正确的输出,但我的代码没有被接受。请帮忙。

#include <stdio.h>

void fact(int x) {
int temp = 1;

if(x<=1) {
printf("%d\n", x);
} else {
for (int i=1; i<=x; i++) {
temp *= i;
}
printf("%d\n", temp);
}
}

int main(void) {
int n;
int t;

scanf("%d", &t);

if(t>=1 && t<=100) {
while(t--) {
scanf("%d", &n);
if (n>=1 && n<=100) {
fact(n);
}
}
}

return 0;
}
Sample input:41253Sample output:121206

最佳答案

100! 大约是 9e157,因此它不能用 int 表示(即使是 64 位)。它甚至不能用 unsigned long long 来表示。

您必须使用double,但您可能无法获得准确的值,因为浮点类型无法表示所有整数。

如果你想获得精确的值,你必须实现自己的整数结构或使用整数数组并对其进行乘法。

关于c - 这段代码有什么问题?我是 CodeChef 新手,它说我的输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58059172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com