【清华机试】N!(0<=N<=1000)
来源:互联网 发布:淘宝如何办理退货 编辑:程序博客网 时间:2024/05/18 00:47
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 3002; // 1000 的阶乘约 2600 位int a[maxn] = {0}; // 存储 N 的阶乘char num[1002][maxn] = {0}; // 存储每一个 N!int main(){ int i = 2; // 遍历2-n int j = 1; int len = 1; // 数组长度,默认为1 int count = 0; // 计数器 // 求解 1!~1000!, 空间换时间 a[1] = 1; for(i = 2; i <= 1000; ++i) { // 每一位乘以i for(j = 1; j <= len; ++j) { a[j] *= i; } // 移位 for(j = 1; j <= len; ++j) { if(a[j] > 9) { a[j+1] += a[j]/10; a[j] %= 10; // 处理高位进位 if(len == j) { len++; } } } // 不用过滤前面的0, len就指向的最高位 count = 0; for(j = len; j >= 1; --j) { num[i][count++] = '0'+a[j]; } num[i][count] = '\0'; // 存储结尾的'\0' } int n; while(cin >> n) { if(n == 0) { // 0! cout << "1" << endl; } else { printf("%s\n", num[n]); } } return 0;}
1 0
- 【清华机试】N!(0<=N<=1000)
- 【清华机试】root(N,k)
- 2006年清华大学计算机复试机试真题(求N的阶乘 N <= 1000)
- 计算N的阶乘 n!=? (n<1000)
- 计算N!(n<=1000)
- n^n=10
- 求解N的阶乘(N<=1000)
- CRB and Candies(lcm(C(n,0)..C(n,n)=lcm(1,2,,,n+1)/(n+1)))hdu5407
- 利用异或求解 N^N=0 N^0=N
- 2^n(n<=10000)
- 第19 题: 题目:定义Fibonacci 数列如下: / 0 n=0 f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!的末尾有两个0。
- 已知一个整数n,写一个函数f(n),返回0~n间,每个数中出现的“1”的个数,问最大的F(n)= n中n为多少
- 阶乘之和Description 输入n,计算S=1!+ 2!+…+ n!的末6位(不含前导0)。这里,n!表示前n个正整数之积。 Input 输入n,,n≤ 106。 Output 输出S的
- 一道清华上机题目(求n! 高精度)
- 清华三宝:单车、土豆、N字班
- n>0?(n&(n-1))==0:false;判断一个数是不是2的幂(表达式语句)
- 【莫比乌斯反演】关于ΣΦ(d|n)=n和Σμ(d|n)=0(*)
- 算法竞赛入门经典(第2版)习题4-9 数据挖掘 Data Mining UVa1591
- 基于Docker布署伪分布式hadoop环境(二)
- HDU 1556 Color the ball(线段树区间更新)
- android6.0 壁纸设置流程讲解
- LaTeX 学习笔记
- 【清华机试】N!(0<=N<=1000)
- C#动态操作DataTable(新增行、列、查询行、列等)
- poj 2485 Highways
- 使用adb安装apk
- 利用explode()函数生成验证码
- 助你快速搭配 Material Design 配色方案的10款Web工具
- JVM学习之路(二)
- RabbitMQ使用场景以及代码示例
- 如何把WORD编号转换为普通文本?