问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么我这个求阶乘和 n>12答案就是错的,c语言编程

发布网友 发布时间:2024-10-05 22:49

我来回答

3个回答

热心网友 时间:2024-12-01 23:30

一般21的阶乘就超过long long(2^64-1)的精度范围了
再大的数据就只能用高精度运算了(数组存数位,模拟四则运算)
#include<stdio.h>
#define max(x,y) x>y?x:y
#define N 10000
int a[N];//记录一个数的阶乘
int s[N]={0};//记录1~n的阶乘和 (数组s置0,累加)
int fun(int n)
{//1~n的大数阶乘
int count=1,f,t;
a[0]=1;
for(int i=1;i<=n;i++)
{
f=0; //记录进位数
for(int j=0;j<count;j++) //每一位数乘i
{
t=a[j]*i+f; //temp记录每一位数乘i加上进位之后的数
a[j]=t%10; //A[j]存储一个不超过10的数
f=t/10; //记录应进位数
}
while(f) //位数增加的进位
{
a[count]=f%10;
f=f/10;
count++;
}
}
return count;//返回当前阶乘的数位长度
}
void fun1(int len)
{//大数相加
int t=0;
for(int i=0;i<len;i++)
{
t=t+s[i]+a[i];
s[i]=t%10;
t/=10;
}
if(t!=0)//进位
s[len]=t;
//memset(a,0,sizeof(a));
}//每次函数fun1调用后a数组不用置0,
//因为i+1一定不i的阶乘大,数位也比i的阶乘数位长;
//i+1的阶乘会将i的阶乘的数位覆盖
int main()
{
int n,len=0;
scanf("%d",&n);//求n的阶乘和
for(int i=1;i<=n;i++)
{
len=max(len,fun(i));//全局数组a保存着i!的数位
fun1(len);//大数累加
}
for(int i=len-1;i>=0;i--)//逆序输出
printf("%d",s[i]);
return 0;
}

热心网友 时间:2024-12-01 23:30

阶乘数据长得太快了,而int的数据太小了,最大就65535,超过这个范围就溢出了。就算换成long类型的也大不了多少,只要n在10以内是正确的就可以了。

热心网友 时间:2024-12-01 23:31

非常正常

你这个int是4字节
大于 12,结果就超过了!

溢出了追问那怎么处理啊

追答可以用别的 更大的 数据类型

取决于你所用的 c 编译系统

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win10电脑hdmiwin10笔记本hdmi连接电视没反应 平板电脑与电视机联接华为平板怎么投屏到电视上 长虹chiq电脑无线投影如何无线把电脑屏幕投影到电视屏幕上 模拟电视电脑系统智能电视怎么变成电脑系统 ops电脑加装固态硬盘ops电脑是什么意思 我想问一下立宇泰电子的ARMSYS6410开发板可以外接什么模块? 小心那些处理过的2元绿幽灵,教你这几招就能识别! 如何辨别人民币是否水洗过,刚有兴趣做收藏可去买第四套人民币还有是否水... oppor7splus手机怎么样现在?照相好不好。是多会儿出来的机子呢。目前... ps怎么改像素大小且不模糊 为什么买不到安泽尔了 没有在广州工作也可以在南沙买房么 需要什么条件?-今日热点 安泽尔珍珠泡腾胶囊可以性生活吗 1,MAC帧中DA在最前面有什么好处? 挂名股东占股的风险是什么? oppoa 1pro5G多少钱 户外LED显示屏黑屏怎么办解决? 苏州好玩的地方排行榜 鼠标左键怎样拖动文件 鼠标不能通过拖拽来移动文件 如何解决电脑无法用耳机听声音的问题? 为什么我的iphone5下载不了软件的?请大家帮帮忙,谢谢了 iPhone5软件下不了啊!!! 国有企业兼并重组的流程有什么 oppo配件官网 两手oppor7多少钱收合适啊 OPPOr7用了半年能卖多少钱 哪些山寨机与苹果很像? 大家帮我推荐一款性价比高的大屏手机要5寸以的智能机八核机价位在500以... ...iphone4苹/果4代高仿Hiphone电容屏 智能山寨手机 wm6.5 是假货_百度... c语言递归求阶乘的问题,我不知道哪里错了,求大神解答 哪些软件不能从苹果商店下载? 德国矿石山花岗体外接触带铀矿田 商厨品牌有哪些 2024年云南文科424分能考上什么大学? 今天上扣,一个人给我发垃圾信息,结果我的手机下线了,再登录时提示我暂时... ...游戏里也没有显示我的登录记录啊。(是同一部手机) ...这是我自己常用的手机,可是他却现在不让我登录,该怎么办? 有没有步步高VIVO 能玩天龙八部的安卓模拟器 天龙八部畅游账号用步步高手机下载什么类型 小漾在舞台上能听见吗 步步高视频学习机H2怎么下载许嵩天龙八部之宿敌 贵阳大十字新大陆在哪 高分求!青海西宁。。。 u盘里删除的东西怎么复原? 装有一半水的杯子了放入一个石头,重力会增加吗?石头没有沉底。_百度知... ...水杯中装15cm深的水。把一个石头放到水中,水深17cm,石头体积是... ...二分之一千克油倒入乙桶,则两桶油重量相等,甲乙两桶油原来共_百度知... 两桶质量相同的油甲桶用去十千克油一桶用去22千克油以后甲桶剩下的油... 甲乙两油桶,已知甲桶有油8千克,若从甲桶中取出二分之一千克油倒入乙桶...