初中的算术(51Nod-1873)
生活随笔
收集整理的這篇文章主要介紹了
初中的算术(51Nod-1873)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
Noder現在上初三了,正在開始復習中考。他每天要計算型如 (a×?a×?a×??×?a) n個a?的式子。 其中 0.0<a<99.999,0<n<26
雖然Noder會計算,但是老是算錯,現在他想要你來寫一個程序輸出正確的結果,以便他核對。
輸入
單組測試數據。
第一行有一個實數a和一個整數n,中間用空格分開。 0.0 < a < 99.999,a總是占6位(a長度<=6),0<n<26。
輸出
輸出一個實數表示結果,不要輸出前導0,后面多余的0也不要輸出,如果是整數不要輸出小數點。
輸入樣例
樣例輸入1
0.4321 20
樣例輸入2
1.0100 12
輸出樣例
樣例輸出1
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
樣例輸出2
1.126825030131969720661201
思路:大數乘法,使用 java 的 BigDecimal 類即可
源程序
import java.math.*; import java.util.*;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);while(input.hasNext()){String a=input.next();int b=input.nextInt();BigDecimal c=new BigDecimal(a);c=c.pow(b);String str=c.toPlainString();int i=0;for( ;i<str.length();++i){char x=str.charAt(i);if(x!='0')break;}int len=str.length()-1;for( ; len>i;--len) {char x=str.charAt(len);if(x=='.'){len--;break;}if(x!='0')break;}for( ; i<=len;++i){char x=str.charAt(i);System.out.print(x);}}input.close();} }?
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的初中的算术(51Nod-1873)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 训练日志 2019.4.27
- 下一篇: 信息学奥赛一本通——1001:Hello