【2006】求N!的精确值
Time Limit: 3 second
Memory Limit: 2 MB
对于阶乘函数,即使自变量较小,其函数值也会相当大。例如: 10!=3628800 25!=15511210043330985984000000 若用integer型数据表示阶乘,最多仅可用7!,用longint类型类型亦只能到12!。设计一个程序,当键入一个正整数n(1<=n<=100)时,输出n!的精确值。
如果N的值不在规定的范围,将输出“error”。
Input
输入文件中只一个数字,表示要计算的n的值(1<=n<=100)。
Output
输出N!的精确值
Sample Input
12
Sample Output
12!=479001600
【题解】
高精度*单精度。乘的时候要记录进位信息。然后处理进位即可。不断更新数字的长度。最后倒叙输出
【代码】
#include <cstdio>
#include <stdlib.h> const int MAXN = 500; int n,a[MAXN],la = 1; void input_data() //输入数据
{
scanf("%d",&n);
if ( n<1 || n>100) //输出错误信息
{
printf("error");
exit(0);
}
for (int i = 2; i <= MAXN;i++)
a[i] = 0;
a[1] = 1; //先置1方便后面乘
} void get_ans()
{
for (int i = 1;i <= n;i++) //从1 一直 乘到n
{
int x = 0;
for (int j = 1;j <= la;j++) //对现在的数字的每一位都乘上i x用来保存进位信息
{
a[j] = a[j] * i + x;
x = a[j] / 10;
a[j] = a[j] % 10;
}
while (x > 0) //如果进位数字>0则 数字的位数可以增加 不断增加即可
{
la++;
a[la] += x;
x = a[la] / 10;
a[la] = a[la] %10;
}
}
} void output_ans()
{
printf("%d!=",n);
for (int i = la;i >= 1;i--)
printf("%d",a[i]); } int main()
{
input_data();
get_ans();
output_ans();
return 0;
}
【2006】求N!的精确值的更多相关文章
- HDU 2006 求奇数的乘积
http://acm.hdu.edu.cn/showproblem.php?pid=2006 Problem Description 给你n个整数,求他们中所有奇数的乘积. Input 输入数据包 ...
- HDOJ 2006 求奇数的乘积
#include<iostream> #include<vector> using namespace std; int main() { int n; while (cin ...
- 【9101】求n!的值
Time Limit: 10 second Memory Limit: 2 MB 问题描述 用高精度的方法,求n!的精确值(n的值以一般整数输入). Input 文件输入仅一行,输入n. Output ...
- poj 3134 Power Calculus(迭代加深dfs+强剪枝)
Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...
- 杭电oj2000-2011
2000 ASCII码排序 #include <stdio.h> int main(){ char a,b,c,t; while(scanf("%c%c%c", &a ...
- 瘋子C++笔记
瘋耔C++笔记 欢迎关注瘋耔新浪微博:http://weibo.com/cpjphone 参考:C++程序设计(谭浩强) 参考:http://c.biancheng.net/cpp/biancheng ...
- 2006 ACM Northwestern European Programming Contest C题(二分求最大)
My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numberN o ...
- 【9112】求2的n次方的精确值
Time Limit: 1 second Memory Limit: 2 MB 问题描述 求2^n的精确值.n由用户输入,0<=n<=3232. Input 输入只有一行,一个正整数n. ...
- 2006 ACM 求奇数的和
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2006 注意 sum=1,写在while 不然每次结果会累积 #include <stdio.h> ...
随机推荐
- 洛谷——P1314 聪明的质监员
https://www.luogu.org/problem/show?pid=1314 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 n 个矿石,从 1到n 逐一编号,每 ...
- PHP类中的__get()和__set函数到底有什么用
PHP类中的__get()和__set函数到底有什么用 一.总结 一句话总结:当试图获取一个不可达变量时,类会自动调用__get.同样的,当试图设置一个不可达变量时,类会自动调用__set.在网站中, ...
- 玲珑杯 Round 19 B Buildings (RMQ + 二分)
DESCRIPTION There are nn buildings lined up, and the height of the ii-th house is hihi. An inteval [ ...
- LAN8720A网络模块的使用问题
一.LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程 ...
- Android滚轮选择器实现
思路: 1.布局,整个控件的布局,事实上就是用代码取带xml来实现当前布局 2,能够滑动的(即滚轮).事实上是一个ScrollView 3.推断滑动状态的,有protected void onScro ...
- openGLES(二)
顶点和着色器 我们使用独立的点集合构建物体,都是使用顶点,之后会使用着色绘制图性,以及告诉OpenGLES如何绘制的小程序. 片段着色器,即每个小的像素的渲染, 顶点着色器确定所绘制图像的 ...
- 【CS Round #44 (Div. 2 only) D】Count Squares
[链接]点击打开链接 [题意] 给你一个0..n和0..m的区域. 你可以选定其中的4个点,然后组成一个正方形. 问你可以圈出多少个正方形. (正方形的边不一定和坐标轴平行) [题解] 首先,考虑只和 ...
- PatentTips - Apparatus and method for a generic, extensible and efficient data manager for virtual peripheral component interconnect devices (VPCIDs)
BACKGROUND A single physical platform may be segregated into a plurality of virtual networks. Here, ...
- 洛谷——P2515 [HAOI2010]软件安装
https://www.luogu.org/problem/show?pid=2515#sub 题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中 ...
- 洛谷 P1727 计算π
P1727 计算π 题目背景 <爱与愁的故事第二弹·compute>第一章. 题目描述 中秋至,博饼声铿锵不断.爱与愁大神兴致勃勃地到学校博饼,结果抱回家的只有一秀二举.爱与愁大神十分生气 ...