10000阶乘

public class SuperFactories {
	public static int lastWithUnZero = 3;// 便捷的输出测试,从几个回。为了找到一个非零元素迄今

	public static void main(String[] args) {
		int[] factories_10000 = new int[35660];// 用数组装下阶乘的每一位
		// 5的阶乘为120
		factories_10000[2] = 1;
		factories_10000[1] = 2;
		// 从6的阶乘開始
		for (int i = 6; i <= 10000; i++) {// 10000的阶乘
			// n! = n*(n-1)!;阶乘运算
			for (int j = 0; j <= lastWithUnZero; j++) {//
				factories_10000[j] *= i;
			}
			// 进位
			for (int j = 0; j <= lastWithUnZero; j++) {//
				if (factories_10000[j] > 9) {
					factories_10000[j + 1] += factories_10000[j] / 10;
					factories_10000[j] %= 10;
				}
			}
			if (factories_10000[lastWithUnZero + 1] > 9) {
				int temp = lastWithUnZero + 1;
				while (factories_10000[temp] > 9) {
					factories_10000[temp +1] += factories_10000[temp] / 10;
					factories_10000[temp++] %= 10;
				}
			}
			// lastWithUnZero 从后面数。找到一个非零元素为止
			for (int j = factories_10000.length - 1; j > 0; j--) {
				if (factories_10000[j] != 0) {
					lastWithUnZero = j;
					break;
				}
			}
		}
		for (int i = lastWithUnZero; i >= 0; i--) {
			if(i%100==0){
				System.out.println();
			}
			System.out.print(factories_10000[i]);
		}
		System.out.println("\n-----------" + lastWithUnZero + "++++++++++"
				+ factories_10000[lastWithUnZero]);
	}

}

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-10 21:29:29

10000阶乘的相关文章

SCU - 1689 算阶乘(10000的阶乘)

题目: Description 求给定数的阶乘. 输入 第一行为测试数据的组数n,后面有n个测试数据.每组测试数据一行,为一个不超过10000的非负整数. 可以保证,最后运算结果以十进制表示不会超过36000位. 输出 对于每组测试数据,输出一行,即相应的阶乘. 输入示例 3 2 3 4 输出示例 2 6 24 用数组来自定义整数的存储.乘法.输出,把1个数按照每5位切开,存到1个数组里面. 代码: #include<iostream> #include<stdio.h> #inc

openjudge 14:求10000以内n的阶乘

14:求10000以内n的阶乘 总时间限制: 5000ms 内存限制: 655360kB 描述 求10000以内n的阶乘. 输入 只有一行输入,整数n(0<=n<=10000). 输出 一行,即n!的值. 样例输入 100 样例输出 93326215443944152681699238856266700490715968264381621468592963895217599993229915.... 1 #include <algorithm> 2 #include <bit

AC日记——求10000以内n的阶乘 openjudge 1.6 14

14:求10000以内n的阶乘 总时间限制:  5000ms 内存限制:  655360kB 描述 求10000以内n的阶乘. 输入 只有一行输入,整数n(0<=n<=10000). 输出 一行,即n!的值. 样例输入 100 样例输出 9332621544394415268169923885626670049071596826438162146859296389521759999322991560894146397615651828625369792082722375825118521091

n的阶乘(1&lt;n&lt;10000)(结果超大……)

n的阶乘(1<n<10000)(结果超大……) #include<stdio.h> int a[200000]; int main() { int n,i,j,k=1; scanf("%d",&n); a[0]=1; for(i=1;i<=n;i++){ for(j=0;j<k;j++) a[j]*=i; for(j=0;j<k;j++){ if(a[j]>=10){ a[j+1]+=a[j]/10; a[j]%=10; }if(

求10000以内n的阶乘(openjudge 2923)

求10000以内n的阶乘 总时间限制:  5000ms 内存限制:  655360kB 描述 求10000以内n的阶乘. 输入 只有一行输入,整数n(0<=n<=10000). 输出 一行,即n!的值. 样例输入 100 样例输出 9332621544394415268169923885626670049071596826438162146859296389521759999322991560894146397615651828625369792082722375825118521091686

求10000以内n的阶乘

总时间限制:  5000ms 内存限制:  655360kB 描述 求10000以内n的阶乘. 输入 只有一行输入,整数n(0<=n<=10000). 输出 一行,即n!的值. 样例输入 100 样例输出 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000

10000的阶乘

public class SuperFactories { public static int lastWithUnZero = 3;// 方便输出测试,从后面数,找到一个非零元素为止 public static void main(String[] args) { int[] factories_10000 = new int[35660];// 用数组装下阶乘的每一位 // 5的阶乘为120 factories_10000[2] = 1; factories_10000[1] = 2; //

1172:求10000以内n的阶乘

传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1172 [题目描述] 求10000以内n的阶乘. [输入] 只有一行输入,整数n(0≤n≤10000). [输出] 一行,即n!的值. [输入样例] 4 [输出样例] 24 直接乘去就OK了 #include<iostream> #include<cstring> #define N 100010 using namespace std; int n,a[N],lena=1; i

10000内数阶乘

#include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std;#define D 10000clock_t stop,start;int main(){ int i,j,c,p,n; while(cin>>n){ start=clock(); vector<vector<int> >v(10000); v[1]