N!
来源:互联网 发布:魔镜软件下载 编辑:程序博客网 时间:2024/05/16 19:20
N!
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 52207 Accepted Submission(s): 14737
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
以前在NYOJ做过一个大数阶乘的问题,但是发现原来的代码在航电上会出现超时现象,参考别人的代码发现控制位可以得到更好的效果,更加省时。
//数组开的太小 用 Big Number算出来10000的阶乘位数为35660,开到40000足够。
#include<stdio.h>#include<string.h>#define MAX 40000int main(){ int m,a[MAX]; while(scanf("%d",&m)!=EOF) { int i,j,digit=1,t=0,s=0; memset(a,0,sizeof(a)); a[0]=1; for(i=2; i<=m; i++) { for(j=1; j<=digit; j++) { s=a[j-1]*i+t; a[j-1]=s%10; t=s/10; } //求位数 while(t) { a[++digit-1]=t%10; t/=10; } } for(i=digit-1; i>=0; i--) printf("%d",a[i]); printf("\n"); }return 0;}
用JAVA解决大数阶乘问题:import java.math.*;import java.util.Scanner;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner in=new Scanner(System.in); /*这个语句是java语句 这句话在java里面的意思是* 新建一个系统默认输入(就是键盘)的对象,* 然后就可以用sc.next()等等语句进行输入了.*//*System.in 的意思是 应用接收用户手动输入*/while(in.hasNext()){ /*hasNext()是Scanner类的一个方法,}判断是否有输入,有输入项,a .hasNext()为true,没有输入项,a .hasNext()为false。*/BigInteger sum = new BigInteger("1");int i,m;m=in.nextInt();for(i=2; i<=m; i++){sum=sum.multiply(BigInteger.valueOf(i));}System.out.println(sum);}}}//精简版:import java.math.*;import java.util.*;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub Scanner in=new Scanner (System.in); while(in.hasNext()){ BigInteger sum=new BigInteger("1"); int i,m; m=in.nextInt(); for(i=2; i<=m; i++){ sum=sum.multiply(BigInteger.valueOf(i)); } System.out.println(sum); }}}
/*
数组存储10000位方式解大数阶乘
*/
#include<cstdio>#include<cstring>int main(){ int n; while(scanf("%d",&n)!=EOF) { int i,j,c,d,ans,a[10002]; memset(a,0,sizeof(a)); a[0]=1; for(i=2,d=1; i<=n; i++) { for(j=0,c=0; j<d; j++) { ans=a[j]*i+c; a[j]=ans%10000; c=ans/10000; } while(c) { a[d++]=c%10000; c/=10000; } } j=d; while(a[j]==0) j--; printf("%d",a[j]); for(i=j-1; i>=0; i--) printf("%04d",a[i]); printf("\n"); } return 0;}
0 0
- N!
- N!
- n
- N
- N!
- N!
- N!
- N!
- n!
- N!
- N!
- N!
- N!
- n
- N!
- N!
- N!
- n!
- libPhenom 编译
- [ACM] 九度OJ 1553 时钟
- How to Turn Off Shape Protection in Visio
- content-based 的初步理解
- iOS 屏幕方向那点事儿
- N!
- PowerDesiger中导入.sql文件
- POJ 2954 Triangle(pick定理,边上整点数)
- Matlab计算机视觉/图像处理工具箱推荐
- hive与hbase的十大区别与联系
- Eclipse使用网上工程出现错误“The import android cannot be resolved”错误解决方法
- C# volatile 与 lock
- 邻舍网的微信扫描登录功能是怎么弄出来的
- 苹果能够创造智能手表的需求吗?