(大数 万进制) N! hdu1042
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[];
int carry=,place=,i,j;
a[]=;
for(i=;i<=n;i++)
{
carry=;
for(j=;j<=place;j++)
{
a[j]=a[j]*i+carry;
carry=a[j]/;
a[j]%=;
}
if(carry>)
{
place++;
a[place]=carry;
}
}
cout<<a[place];
for(i=place-;i>=;i--)
cout<<setw()<<setfill('')<<a[i];
}
int main()
{
int n;
while(cin>>n)
{
fac(n);
cout<<endl;
}
return ;
}
(大数 万进制) N! hdu1042的更多相关文章
- hdu-1042(大数+万进制)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 参考文章:https://blog.csdn.net/tigerisland45/article ...
- HDU1042 N!(大数问题,万进制)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1042 N! Time Limit: 10000/5000 MS (Java/Others) M ...
- bzoj 1005: [HNOI2008]明明的烦恼 树的prufer序列+万进制
题目传送门 思路: 这道题需要前置知识prufer编码,这篇博客对prufer编码和这道题的分析写的很好. 这里主要讲一些对大数阶乘的分解,一个办法当然是用高精度,上面这篇博客用的是java,还有一个 ...
- 【hdoj_1715】大菲波数(大数+100000000进制)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1715 本题采用大数加法即可解决.采用100000000进制速度更快. C++代码如下: #include& ...
- HDU5050:Divided Land(大数的进制转化与GCD)
题意:给定大数A和B,求gcd.所有数字都是二进制. 思路:先输入字符串,再转化为大数,然后用大数的gcd函数,最后转化为字符串输出. 利用字符串和大数转化的时候可以声明进制,就很舒服的完成了进制转化 ...
- Java 大数任意进制转换
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = ...
- HDU_1042——阶乘,万进制
#include <cstdio> ; const int BASE = MAX; int main() { int n, i, j; while(~scanf("%d" ...
- poj 2635 千进制
转自:http://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 大致题意: 给定一个大数K,K是两个大素数的乘积的值. 再给定一个 ...
- poj 2305(指定进制,大数取模)
题意:输入一个进制b,在输入两个基于b进制的大整数 x,y ,求x%y的b进制结果. http://162.105.81.212/JudgeOnline/problem?id=2305 函数: Str ...
随机推荐
- 第七周 linux如何装载和启动一个可执行文件
潘恒 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验内容 1.预处理. ...
- Linux内核分析第六周总结
进程控制块PCB--task_struct 操作系统的内核里的三大功能: 进程管理 内存管理 文件系统 进程描述符--task_struct 进程管理是最核心的内容 然而Linux进程的状态与操作系统 ...
- Golang 函数
创建函数 package main import "fmt" //有参数,有返回值 func demo(a int, s string) (int, string) { retur ...
- 配置wbepack
proxyTable:{ //反向代理 先建立连接 '/sexLady':{ target:url//请求地址 暗号:'/sexLady ' changeOrigin:true ,//类似baseUr ...
- Oracle 使用PDB 的情况下进行备份恢复的使用.
1. 关于directory: pdb 需要在container 上面创建directory才可以使用 CDB里面创建的directory是会无反应. 在PDB 里面创建: cmd 之后运行 set ...
- Babel安装在本地并用webstrom由ES6转Es5
1进入到根目录 2安装babel npm install babel-cli --save-dev 3安装其他库 npm install --save-dev babel-preset-env 4创 ...
- 第七周PSP 新折线图和饼图 个人时间管理
1.PSP DATE START-TIME END-TIME EVENT DELTA TYPE 4.18 15.36 16.10 读构建执法 走神5min 29mi ...
- Java之"instanceof"和"isInstance"代码举例
源码: /** * @Date:2018-04-20 * @Description:判断Instance * - instanceof方法返回一个boolean类型的值,意在告诉我们对象是不是某个特定 ...
- C/S架构引用Lodop 如何在C#调用web打印控件Lodop
lodop是web打印控件,引用安装目录下的ocx文件,可以在c/s架构中使用. 该文件所在路径:C:\Program Files (x86)\MountTaiSoftware\Lodop 有32位和 ...
- linux 环境下 firefox乱码问题解决
https://blog.csdn.net/wlwlwlwl015/article/details/51482065