HDOJ1042 N!
来源:互联网 发布:js获取身份证号码 编辑:程序博客网 时间:2024/05/19 07:10
N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 86344 Accepted Submission(s): 25402
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
123
Sample Output
126
计算阶乘,使用long大概20的时候就超了,使用大数太慢。
应该使用数组的方式,考虑到N最大是10000,初步估算有四万位。
建立一个有长度为八千的int数组,每一个存放五位数。
import java.util.Scanner;public class Main{private static Scanner scanner;public static void main(String[] args) {scanner = new Scanner(System.in);while (scanner.hasNext()) {int n = scanner.nextInt();// n最大是100000,最多有40000位,一个num[i]放五位数字int num[] = new int[8000];// 40000/5 = 8000num[0] = 1;int len = 1;// 记录有效数字到了哪了for (int j = 2; j <= n; j++) {for (int i = 0; i < len; i++) {num[i] *= j;}for (int i = 0; i < len; i++) {if (num[i] > 99999) {num[i + 1] += num[i] / 100000;//num[i] %= 100000;}}if (num[len] != 0) {// 向前拓展一位len++;}}// System.out.println("len="+len);// 前面这个不输出有效数前面的0System.out.print(num[--len]);while (len > 0) {System.out.printf("%05d", num[len - 1]);len--;}System.out.println();}}}
阅读全文
0 0
- hdoj1042 N!
- HDOJ1042 N!
- hdoj1042(N!,大数乘)
- N的阶乘HDOJ1042
- HDOJ1042 N!(大数阶乘)
- 求 n! (大数问题)----------HDOJ1042
- ACM练习之hdoj1042《N!》
- [ACM] hdoj1042 N! 解题报告
- HDOJ1042
- hdoj1042
- HDOJ1042
- 大数乘法-HDOJ1042
- 大数阶乘模板 hdoj1042
- HDOJ1042大数相乘
- HDOJ1042(高精度阶乘 JAVA)
- 大数阶乘问题HDOJ1042再分析
- N!
- N!
- Python基础知识简述(个人笔记)
- 什么才是8K,8K的参数,8K应用,8K介绍、8K测试交流
- 使用Maven archetype-webapp创建web项目
- 免安装Oracle客户端使用免安装Oracle客户端使用PLSQL Developer 8.0.3.1510 连接Oracle10g或11g
- 封装、继承、多态。
- HDOJ1042 N!
- Lua第一课
- (实践应用)Oracle 11g R2 测试schema生成
- scrapy pymysql访问mysql异常
- Perl/PHP/Python/Java/Ruby的拟人课堂讨论-比较各门编程语言的情况
- file_get_contents 增加超时的时间限制
- css实现瀑布流效果
- git常用操作
- SGMII 和 Serdes 的详细说明