n的阶乘最后一个非0的数
来源:互联网 发布:java 判断object 类型 编辑:程序博客网 时间:2024/05/22 17:01
哈哈~要说这个题目,中午比赛的时候1AC了、、归功于之前写过的求大数的阶乘这个算法啊。。
在电脑上调试了一会,发现求阶乘的过程是一段段输出的。。就比如说10的阶乘,先输出362,然后8800,
知道了这点,那么求n的阶乘最后一个非0的数就变得很简单了。。只要加个while判断一下,就ok了、、
#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;#define N 10005 int main(){int i,j,len;int n;while(scanf("%d",&n) != EOF){ if(n == 0 || n == 1){printf("%5d -> 1\n", n);continue;}long s[N] = {1, 1};len = 1;for(i= 2; i <= n; i ++) {for(j = 0; j < len; j ++)s[j] = s[j] * i;for(j = 0;j < len - 1; j ++) {s[j+ 1] += s[j] / 10000;s[j] = s[j] % 10000;}if(s[j] > 10000 ) {s[j + 1] = s[j]/ 10000;s[j] = s[j] % 10000;len ++; }}int tt;int flag = 0;for (int j = 0; j < len; j ++) {flag = 0;while (s[j] > 0) {tt = s[j] % 10;s[j] /= 10;if(tt > 0) {flag = 1;break;}}if(flag == 1) {printf("%5d -> %d\n",n, tt);break;}}} return 0;}
好吧。看到他们的代码了、、好简单啊。。。
#include<cstdio>int main(){ int n,i; long long s; while(scanf("%d",&n)!=EOF) { s=1; for(i=2;i<=n;i++) { s*=i; while(s%10==0)s/=10; s=s%100000; } printf("%5d -> %lld\n",n,s%10); } return 0;}
- n的阶乘最后一个非0的数
- 获取阶乘n!的最后一个非零数字
- n阶乘求最后非0数字及最后面连续0的个数
- USACO-Factorials(阶乘最后一个非0数)
- 阶乘 最后一个不为0的数
- POJ-1150(求排列数P(n,m)中最后一个非0的数字)
- POJ-1150(求排列数P(n,m)中最后一个非0的数字)
- 求排列数P(n,m)中最后一个非0的数字
- 求N!的最后一个非0位
- 求N!(N的阶乘) 中最后有几个0
- 求阶乘的最后非零位
- 【c++程序】求一个数的阶乘n!
- 找N!最后一个非零的数字
- 杭电1066-N!的最后一个非零数字
- 求N!阶乘中结尾0的个数,或结果的二进制表示中最后一个1所在的位置
- C语言:从键盘输入一个数n,求n的阶乘(n!)
- poj 3406:Last digit(求C(n, m)的最后一个非0位)
- 统计一个数阶乘0的个数
- asp.net的<% %>总结
- ubuntu 查看系统信息
- QT里用QML写的Android程序关于设置横屏的方法
- POJ 3278 Catch That Cow
- 大话设计模式总结2---设计模式六原则
- n的阶乘最后一个非0的数
- android开发项目的各个目录的说明
- unity的#pragma strict,#pragma downcast等指令分享
- <meta http-equiv=...> 的功能
- python利用K均值做聚类,判断中国足球第几流
- 提高语言组织能力
- 【黑马程序员】分布式事务TransactionScope(学习笔记)
- C# asp.net 母版页嵌套
- Android 百度地图API学习(三)-----啥是坐标