国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基礎練習 階乘計算

2019-11-11 04:20:03
字體:
來源:轉載
供稿:網友

問題描述

  輸入一個正整數n,輸出n!的值。  其中n!=1*2*3*…*n。算法描述  n!可能很大,而計算機能表示的整數范圍有限,需要使用高精度計算的方法。使用一個數組A來表示一個大整數a,A[0]表示a的個位,A[1]表示a的十位,依次類推。  將a乘以一個整數k變為將數組A的每一個元素都乘以k,請注意處理相應的進位。  首先將a設為1,然后乘2,乘3,當乘到n時,即得到了n!的值。輸入格式  輸入包含一個正整數n,n<=1000。輸出格式  輸出n!的準確值。樣例輸入10樣例輸出3628800代碼分享:
/*此題關鍵部分在于進位的處理,以及結果的輸出。重點留意code的第15-18行 21-23行 */ #include<stdio.h>#include<string.h>int main(){	int R[3000];//儲存結果的數組 	int n,i,j;	int num;	memset(R,0,sizeof(R));//先將結果數組全部賦值為0 	scanf("%d",&n);	R[0]=1;//第一位表示個位 	num=1;//表示當前保存結果的數組中有效的位數 	for(i=2;i<=n;i++){		int c=0;//c表示進位,初始化為0 		for(j=0;j<3000;j++){			int s=R[j]*i+c;//s暫時儲存結果,由進位和當前位乘積相加得到 			R[j]=s%10;//去除十位數字,保留個位數字 			c=s/10;//求進位				}	}	for(i=2999;i>=0;i--)		if(R[i])			break;//去除結果數組前面無效的0部分 	for(j=i;j>=0;j--)		PRintf("%d",R[j]);//由高到低輸出結果 	printf("/n");	return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 包头市| 永胜县| 青河县| 天长市| 静宁县| 邛崃市| 岑溪市| 镇坪县| 阿鲁科尔沁旗| 广元市| 博兴县| 饶平县| 班玛县| 论坛| 祥云县| 沙雅县| 蓬莱市| 大城县| 垫江县| 北宁市| 广宁县| 赣州市| 高雄县| 衡水市| 崇礼县| 潼南县| 蕉岭县| 乳山市| 贞丰县| 平泉县| 康定县| 滁州市| 宽城| 通州区| 诸城市| 綦江县| 思南县| 区。| 唐海县| 长岭县| 宜兴市|