用十进制计算30!(30的阶乘),将结果转化成3进制进行表示的话,该进制下的结果末尾会有多少个0?
来源:互联网 发布:淘宝可以直邮韩国么 编辑:程序博客网 时间:2024/04/29 21:04
如何是小阶乘的话,可以使用这个算法:
运行结果:
#include<stdio.h>int main(){int n;int i;int sum;printf("请输入阶乘:");scanf("%d",&n);printf("请输入要换算的进制:");scanf("%d",&i);sum=fun(n);printf("阶乘为:%d\n",sum);fun1(sum,i);return 0;}int fun(int n){if(n==1)return 1;elsereturn n*fun(n-1);}int fun1(int n,int i){int count=0;int j=-1;int a[1280]={0};while(n!=0){a[++j]=n%i;n=n/i;}printf("%d进制为:",i);for(j;j>=0;j--){printf("%d",a[j]);count++;if(count%4==0)printf(" ");if(a[j]!=0)count=0;}printf("一共有%d个0\n:",count);}
根据规律,看1-30里面含有多少3的倍数,3,6,12,15,21,24,30 每个数含有1个3, 9,18,还有2个3, 27 还有3个3 ,一共14个3。 因为进制相当与乘除,所以后14位一定会进制为0,代码如下:
#include<stdio.h>int main(){int m,n;int i,j,count=0;printf("请输入您的阶乘:");scanf("%d",&m);printf("请输入您的进制:");scanf("%d",&n);for(i=1;i<=m;i++){if(i%n==0)printf("\n产生数:%d\n",i);for(j=i;j%n==0;j=j/n){printf("%d\t",j);count++;}}printf("\n%d进制末尾0的个数为%4d个\n",n,count);return 0;}
运行结果:
请输入您的阶乘:30请输入您的进制:3产生数:33产生数:66产生数:993产生数:1212产生数:1515产生数:18186产生数:2121产生数:2424产生数:272793产生数:30303进制末尾0的个数为 14个
0 0
- 用十进制计算30!(30的阶乘),将结果转化成3进制进行表示的话,该进制下的结果末尾会有多少个0?
- 计算N的阶乘结果末尾含多少个零
- n的阶乘结果中末尾有多少个零?
- 计算1024的阶乘结果有多少个0
- 计算1024的阶乘结果有多少个0
- 计算1024的阶乘结果有多少个0
- N!的结果中末尾有多少个0,即可以在N阶乘中找到5的个数就是N阶乘结果的末尾会有几个0了,请看以下分析
- 计算n!的十进制表示最后有多少个0
- 计算n!的十进制表示最后有多少个0
- 阶乘结果末尾有多少零?
- 求n!的结果末尾有多少0
- 100的阶乘末尾有多少个0的问题
- hdu 1124 Factorial 数论,就是求一个数的阶乘的结果末尾有多少0.
- 100 的阶乘末尾有多少个0?
- 100 的阶乘末尾有多少个0? .
- N的阶乘(N!)中的末尾有多少个0?
- 100 的阶乘末尾有多少个0?
- N的阶乘末尾有多少个0
- 轻量级java ee 中的相关技术概述
- rsync 文件同步
- SpringMVC表单标签(6)
- Bit Manipulation - Number of 1 Bits
- 引用和指针初探
- 用十进制计算30!(30的阶乘),将结果转化成3进制进行表示的话,该进制下的结果末尾会有多少个0?
- 浅谈C/C++内存泄漏及其检测工具
- mysql多字段唯一索引
- 任务单案例一
- 中日韩教科书中的历史
- Chrome浏览器中的网上应用店如何加载
- 继上一篇文章,由于本地限制,等后续整理在一起
- Ubuntu系统下的Hadoop集群(6)_Hadoop安装配置简略教程
- Java int和integer的区别