藍橋杯 java 基礎練習 vip試題 階乘計算

其實第一次看到這個題目心里有點發怵,但是請耐心讀一下題目要求(其實也是解題思路提示),你就會發現事情沒有你想的那么棘手,
要點
1.了解乘法的原理
2.了解進位機制(之前上過數字邏輯課,提到過加法進位器的原理)
其實上面兩點大家應該都知道
代碼及注釋
import java.util.Scanner;
public class Main {
public static void main(String[]args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();//輸入階乘需要乘到多少
int []a=new int[400];//陣列存盤數字的每一位
a[0]=1;
int r;//r為余數
int carry = 0;//carry為進位數字
int t=0;//t為余數+進位
int k = 0;//用于標記陣列中第一個不為零的元素位置
for(int i=2;i<=n;i++)
{
for(int j=0;j<400;j++)//從a[0]開始,每一位和i相乘(原理為乘法運算)
{
t=a[j]*i+carry;
carry=t/10;
a[j]=t%10;
}
}
//從陣列的最后一個元素開始,找到第一個不為0的元素
for(int i=400-1;i>=0;i--)
{
if(a[i]!=0)
{
k=i;
break;
}
}
//倒敘輸出數字中的元素
for(int i=k;i>=0;i--)
{
System.out.print(a[i]);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259832.html
標籤:其他
上一篇:演算法實作(排列 組合 二分圖)
