nyoj 大數階乘
大數階乘
時間限制:3000 ms | 記憶體限制:65535 KB 難度:3- 描述
- 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?
- 輸入
- 輸入一個整數m(0<m<=5000)
- 輸出
- 輸出m的階乘,並在輸出結束之後輸入一個換行符
- 樣例輸入
-
50
- 樣例輸出
-
30414093201713378043612608166064768844377641568960512000000000000
大數階乘,也是模擬,要有基本思路
程式碼:
#include<stdio.h> int main() { int large_num[16326] = { 1 }; int num, zero = 0; int i, j, k, n; int top; scanf("%d", &num); for (i = 2, top = 1; i <= num; i++){ k = i; while (k % 10 == 0){ k /= 10; zero++; } for (j = 0; j < top; j++) large_num[j] *= k; for (n = 0; ; n++){ large_num[n + 1] += large_num[n] / 10; large_num[n] %= 10; if (n + 1 == top){ if (large_num[n + 1] != 0) top++; else break; } } } for (i = top - 1; i >= 0; i--) printf("%d", large_num[i]); for (i = 0; i < zero; i++) printf("0"); printf("\n"); return 0; }
相關推薦
nyoj 大數階乘
大數階乘 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出
nyoj 大數階乘 28
#include<stdio.h> #include<string.h> int a[3270];//其實我先開的很大,後來通過a[0]的值判斷,然後改的小了,儘量佔得空間少一點 int main() { int n; while(~scanf("%d",&n)
NYOJ---大數階乘---28
大數階乘時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後
NYOJ 28 大數階乘(JAVA)
題目:大數階乘時間限制:3000 ms | 記憶體限制:65535 KB描述我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?輸入輸入一個整數m(0<m<
nyoj 28大數階乘
描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入一個換
NYOJ:28-大數階乘
時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0< m<=5000) 輸出 輸出m的階乘,並在
NYOJ 28.大數階乘(大數問題)
/*描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入一個換行符 樣例輸入 50 樣例輸出30414093201713378043612
NYOJ.28.大數階乘
28.大數階乘 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入
nyoj 28 大數階乘
描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入輸入一個整數m(0<m<=5000) 輸出輸出m的階乘,並在輸出結束之後輸入一個換行符 樣例輸入 50
NYOJ,28,大數階乘
大數階乘 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m
NYOJ 28.大數階乘
/* 大數階乘 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入一個換行符 樣例輸入 50樣例輸出 30414093201713378043612608166064768844377641568960512000000000
斯特林(Stirling)公式 求大數階乘的位數
href put || tdi code const 但是 body https 我們知道整數n的位數的計算方法為:log10(n)+1n!=10^m故n!的位數為 m = log10(n!)+1 lgN!=lg1+lg2+lg3+lg4+lg5+...........
codewars--js--Large Factorials--階乘+大數階乘
ref 階乘 clas python count .cn exp pre n+1 問題描述: In mathematics, the factorial of integer n is written as n!. It is equal to the product of
codevs 1488 GangGang的煩惱 大數階乘
codevs 1488 GangGang的煩惱 大數階乘 傳送門:http://codevs.cn/problem/1488/ 使用大數階乘的模版即能A該題,原理不難理解,就是用陣列來儲存階乘的結果,主要就是按位進行處理,包括進位的處理
大數階乘——詳解講解
題目詳情:NYOJ-大數階乘 階乘相信大家都不陌生,簡單一點的迴圈遞迴都可以解決。 在這裡將要講解的
N! (n的階乘)(大數階乘)
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
大數階乘or相乘
大數相乘或者階乘不能用傳統乘號直接來原因是乘出來數太大了,計算機記憶體受不了,比如12!為億級,100!有97位;程式設計界處理這類大數問題一般這麼處理: 如果現在要求:2746512,那麼乘的過程是: 對於個位:312=36,那麼可以斷定27465*12的個位數一定是6,所以我們把個
java大數階乘
//JAVA 大數階乘 import java.math.*; import java.util.Scanner; public class LargeNumber{ public sta
PTA_基礎程式設計題目集_6-10 階乘計算升級版 (20 分)“大數階乘”
題目地址 題目分析: 1.預估1000!的位數~~進行放大估計~~1000^900&100^100即是3*900+2*100+o<3000位; 2.這裡顯然需要利用陣列來儲存數字並進行運算,讓陣列成員每個儲存3位數字(題目條件已告知引數小於1000),我們構
大數階乘(藍橋杯)
/* 1000!的階乘有多少位數字?不知道,總之,十個long long也是不夠用的,所以考慮用陣列來模擬乘法運算,那麼陣列開多長合適呢?其實博主最開始開的2000,結果。。。提交上去只過了80%資料,顯然,2000位不夠,最後開了個3000的陣列直接AC了。那麼下面來說說模擬大數運算吧!!