标签:10 int 题解 蓝桥 存放 BASIC 阶乘 进位
每日刷题(二十九)
BASIC-30.阶乘计算
这个题目有点魔鬼,因为你要考虑你的数组到底设多大,你的数组能设多大。其次你得考虑数字存放的逻辑,分情况讨论,进位和未进位,同时需要设置两个变量,一个存放刚开始做乘法所产生的的进位,另一个存放前一个数乘法运算后产生的进位,每一轮循环要修改其值。
详细C代码如下:
#include<stdio.h>
//#include<string.h>
int main()
{
int a[90000] = {0};
// memset(a, 0, sizeof(a));
int n;
scanf("%d",&n);
int i;
a[0] = 1;
int j = 1;
int t = 0;
int m = 0;
int s = 0;
for(j = 1; j <= n; j++)
{
t = 0;
m = 0;
for(i = 0; i < 90000; i++)
{
m = a[i] * j / 10;
a[i] = a[i] * j % 10;
if(a[i] + t >= 10) //前一个数的进位
{
s = a[i] + t;
t = m + s / 10;
a[i] = s % 10;
}
else
{
a[i] += t;
t = m;
}
}
}
int k = 0;
for(i = 89999; i >= 0; i--)
{
if(a[i] != 0)
k = 1;
if(k)
printf("%d",a[i]);
}
printf("\n");
return 0;
}
这里列出一部分示例以及结果:
如果喜欢我的文章,请记得三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持,下期更精彩!!!
标签:10,int,题解,蓝桥,存放,BASIC,阶乘,进位 来源: https://blog.csdn.net/qq_44631615/article/details/104829840
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。