(大数 万进制) N! hdu1042
2018-06-18 00:14:40来源:未知 阅读 ()
N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 88267 Accepted Submission(s): 26008
Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!
Input
One N in one line, process to the end of file.
Output
For each N, output N! in one line.
Sample Input
1
2
3
Sample Output
1
2
6
(这个题用JAVA更好)
用java: import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner (System.in); int n; while(in.hasNextInt()) { n=in.nextInt(); BigInteger a=BigInteger.ONE; for(int i=1;i<=n;i++) a=a.multiply(BigInteger.valueOf(i)); System.out.println(a); } } }
这个思路是从其他博客上看到的。。。
思路:
万进制:
这题也让我有了点想法。我们经常用的进制就是2进制、8进制、10进制和16进制。何来“万进制”?世上本无,有人喊了也就有了。呵呵
现在来谈谈自己对进制的一点不成熟的想法。计算机能“识别”0和1,人能识别0、1、2、3、4、5、6、7、8、9以及其多位组合。那么,
为啥就单单有2、8、10、16这几个进制。我想并不止这几个,10进制是我们日常生活沿用来了的,难道来个5进制就不行?当然不是,不过
一切以方便优先罢了!2进制是因为方便计算机识别才兴起的,5000年前应该不会有2进制!8进制和16进制又因何2进制有天然联系,所以
也出现了用途,2^3=8、2^4=16(例:这在《数字逻辑》中关于编码方面有相关应用)。
就题论题。再来谈谈1042的万进制。也以一个例子来说明:
107924372*15=1618865580。
①上面的乘法如果运用10进制,很简单。
②万进制呢?
首先存数:a[0]=4372,a[1]=792,a[2]=1。107924372,从低位到高位每四位存到一个数组元素中。此时,总位数为3。
接着运算:a[0]*15=65580,所以进位为a[0]/10000=6,a[0]=a[0]%10000=5580。a[1]*15=11880,a[1]=a[1]+6=11886。
进位为1,a[1]=1886。a[2]*15=15,a[2]=a[2]+1=16,进位为0。
输出:a[2],a[1],a[0]即为1618865580。要注意的是:如果a[2]=886,那么该如何输出?直接输出:168865580。显然不对,
正确的是16088655880。输出的原则是:最高位原样输出,其它位如果小于1000,则高位补0,一位一补。
总之,高精度计算阶乘一般用万进制。
#include<iostream> #include<iomanip> using namespace std; void fac(int n) { int a[10001]; int carry=0,place=0,i,j; a[0]=1; for(i=1;i<=n;i++) { carry=0; for(j=0;j<=place;j++) { a[j]=a[j]*i+carry; carry=a[j]/10000; a[j]%=10000; } if(carry>0) { place++; a[place]=carry; } } cout<<a[place]; for(i=place-1;i>=0;i--) cout<<setw(4)<<setfill('0')<<a[i]; } int main() { int n; while(cin>>n) { fac(n); cout<<endl; } return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:04 java 基础:数据类型
- 大公司都在做的大数据平台,为你精选这一份书单 2020-06-09
- 位运算符 2020-05-26
- 【转】大数据研发、java研发实习面经阿里腾讯字节跳动。 2020-04-28
- javaSE基础-基本知识 进制 2020-04-26
- 二进制的详细讲解 2020-04-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash