求n!的最高位
来源:互联网 发布:环保部 环境监测数据 编辑:程序博客网 时间:2024/06/06 05:13
阶乘的最高位
时间限制: 1 Sec 内存限制: 128 MB
题目描述
输入一个正整数n。输出n!的最高位上的数字。
输入
输入一个正整数n(n不超过1000)。
输出
输出n!的最高位上的数字。
样例输入
1000
样例输出
4
以下解释转载自:http://wenda.haosou.com/q/1378770028060059
设N!=x.yzzyz*10^kx=1~9取以10为底的对数log(N!)=k+log(x.yzzyz)
可见x.yzzyz=10^( log(N!)-(int)log(N!));
x=(int)(10^( log(N!)(int)log(N!)));
log(N!)=log(1)+....+.....+log(N)也就是说先计算以10为底的log(N!)
算好了求得它的整数部分(int) log(N!)
然后获得小数部分( log(N!)-(int)log(N!))
然后求10的方幂 pow(10,( log(N!)-(int)log(N!)));
然后取整就得到了(int)pow(10,( log(N!)-(int)log(N!)));
#include<stdio.h>#include<math.h>int main(){ int n,i,first; int a[5]= {1,1,2,6,4}; double sum=0; scanf("%d",&n); if(n<5) //前几位有误差,用数组先存起来 { printf("%d\n",a[n]); return 0; } for(i=1; i<=n; i++) sum+=log(1.0*i)/log(10.0); sum-=(int)sum; first=exp(sum*log(10.0)); printf("%d\n",first); return 0;}
- 求N!的最高位
- 求n!的最高位
- 求N的阶乘的最高位
- 求n!的最高位数字
- 求N的N次幂的最高位
- 求N的N次方的最高位
- 求N的N次的最高位
- HDOJ1060 Leftmost Digit(求n^n的最高位)
- N!的最高位
- HDU n^n求最高位
- HDU 1060 Leftmost Digit(求 n ^ n 的最高位的值)
- N的N次方的最高位
- HDOJ-1060-Leftmost Digit(求n^n的最高位)
- HDU Leftmost Digit(求n^n最高位的数字)
- HDOJ-1060-Leftmost Digit(求n^n的最高位)
- HDOJ-1060-Leftmost Digit(求n^n的最高位)
- Leftmost Digit(杭电1060)(求N^N的最高位)
- HDU 1060 求N^N的最高位 (数学,科学计数法+log10()函数)
- Rsync 算法解析与应用
- oracle win64 下载地址
- 交换机与集线器的区别
- lastPathComponent的功能
- C++ Primer 创建动态数组
- 求n!的最高位
- 进销存系统设计说明书
- 网易数据挖掘笔试题
- 程序员啊~为什么你晋升很难?
- VS2008集成QT4.7.2环境搭建
- java date转化为mysql中的Datetime格式
- Android 编程下 Touch 事件的分发和消费机制
- C++类成员函数指针
- jboss 自动发布流程