logo
预览版
标准版
您当前访问的是 喵宅苑 MewoGarden × 技术宅II 预览版网页,若要正常使用功能请戳我前往标准版
帖子对应的标准版页面请点击帖子下方[→标准版]按钮
两只小白兔呀

#7m#include<stdio.h>

void main()

{

int i,n;

double p=1;

printf("输入一个自然数n=");

scanf("%d",&n);

for(i=1;i<=n;i++)

p=p*i;

printf("n!=%10.0

【查看更多内容请登录哈】

右眼

请不要将double类型和int类型变量之间强制赋值= = 求阶乘不可能出现小数直接用int就行

下面贴修改后代码 亲测无误

#include<stdio.h>

#include *本站禁止HTML标签噢*

int main()

{

int i,n;

int p=

【查看更多内容请登录哈】

两只小白兔呀

【链接登录后可见】

直接告诉lz算法吧

一个2 一个5,产生一个0

2总是比5多的,所以只要统计(1,2...n)每个数字中因数5的个数就可 ...

小白表示无法理解 #30m 不过还是谢谢大神#32m

两只小白兔呀

【链接登录后可见】

在int范围以内时是对的,最高可计算到12的阶乘,如果输入13,m=p赋值后的m的值已经超出了int的存储范围,得 ...

嗖迪斯奈 谢谢大神

jingyixx

直接告诉lz算法吧

一个2 一个5,产生一个0

2总是比5多的,所以只要统计(1,2...n)每个数字中因数5的个数就可以了

所有数字扫一遍

一个O(n)的过程很容易写出来

最快估计能到log(5, n),计算floor(n/5) + floor(n/25) + floor(n/125)

【查看更多内容请登录哈】

星璇凌

在int范围以内时是对的,最高可计算到12的阶乘,如果输入13,m=p赋值后的m的值已经超出了int的存储范围,得到的m值直接是负数了,自然会出错。

Pleasures

【链接登录后可见】

纯表情小心哟

两只小白兔呀