iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
自我挑戰組

CPE題目練習系列 第 11

[Day11]Bangla Numbers

  • 分享至 

  • xImage
  •  

上一篇介紹了Cubes,主要是考迴圈的運用及判斷,仔細思考之後就會發現不是那麼困難了。

今天講解的題目是 Bangla Numbers
先附上程式碼:

import java.util.;
import java.math.
;
import static java.lang.System.*;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BigInteger b=new BigInteger("10000000");
BigInteger c=new BigInteger("100000");
BigInteger d=new BigInteger("1000");
BigInteger e=new BigInteger("100");
BigInteger A=new BigInteger("0");
String[] t={"kuti","lakh","hajar","shata",""};
int res=1,B=1,C=1,Y=7,V=1;
while(sc.hasNextBigInteger()){
int arr[]=new int[5];
int ar[]=new int[5];
BigInteger a=sc.nextBigInteger();
if(a.compareTo(BigInteger.ZERO)==0){
System.out.println(" "+B+"."+" "+a);
B++;}
else {
res=a.compareTo(b);
if(res !=-1){
A=a.divide(b);
a=a.mod(b);
arr[0]=A.intValue();
if(arr[0]>10000000){
C=0;
ar[0]=arr[0]/10000000;
arr[0]=arr[0] % 10000000;
Y=0;}
if(arr[0]>100000){
C=0;
ar[1]=arr[0]/100000;
arr[0]=arr[0] % 100000;
Y=1;}
if(arr[0]>1000){
C=0;
ar[2]=arr[0]/1000;
arr[0]=arr[0] % 1000;
Y=2;;}
if(arr[0]>=100){
C=0;
ar[3]=arr[0]/100;
arr[0]=arr[0] % 100;;
Y=3;}
}
res=a.compareTo(c);
if(res !=-1){
A=a.divide(c);
a=a.mod(c);
arr[1]=A.intValue();
}
res=a.compareTo(d);
if(res !=-1){
A=a.divide(d);
a=a.mod(d);
arr[2]=A.intValue();
}
res=a.compareTo(e);
if(res !=-1){
A=a.divide(e);
arr[3]=A.intValue();
a=a.mod(e);
}
arr[4]=a.intValue();
if(C==1){
if(B>9) System.out.print(" "+B+".");
else System.out.print(" "+B+".");
for(int i=0;i<5;i++){
if(arr[i]!=0){
if (i!=4)
System.out.print(" "+arr[i]+" "+t[i]);
else System.out.print(" "+arr[i]);}}}
else{
if(B>9) System.out.print(" "+B+".");
else System.out.print(" "+B+".");
for(int i=0;i<4;i++){
if(ar[i]!=0)
if(arr[0]==0){
if(i!=Y) System.out.print(" "+ar[i]+" "+t[i]);
else System.out.print(" "+ar[i]+" "+t[i]+" "+t[0]);}
else System.out.print(" "+ar[i]+" "+t[i]);}
for(int i=0;i<5;i++){
if(arr[i]!=0){
if (i!=4)
System.out.print(" "+arr[i]+" "+t[i]);
else System.out.print(" "+arr[i]);}}
}
System.out.println();
B++;
C=1;}
}

}
};

今天這題因為題目需要的數字太大,因此有用到BigInteger,
BigInteger用法網址:https://www.itread01.com/content/1545195543.html
https://www.itread01.com/content/1546080151.html

首先要先在最上面新增import java.math.*;。
首先先設定題目要求的條件以及文字,接下來依照判斷大小來輸出數字以及文字,由於BigInteger的判斷只有1、0、-1,因此在判斷時要先把判斷的程式碼寫出來,在使用if來判斷,之後再使用陣列把數字記錄下來之後再使用陣列輸出。
這題要使用字串來寫也可以,只需要把數字以字串記錄下來,在判斷有幾個字元,接下來也是寫判斷式就可以了,但這種方法可以直接紀錄數字,在某些時候會輕鬆許多,所以這一次打算使用BigInteger來寫這一題,這樣以後遇到大的數字時可以不用想怎麼轉成字串了。
今天的講解就到這裡。
明天也是新的題目,會介紹Die Game,繼續加油!


上一篇
[Day10]Cubes
下一篇
[Day12]Die Game
系列文
CPE題目練習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言