UVa 10925 - Krakovia

  題目大意:關於大數的加法和除法的,用Java的BigInteger能夠方便地解決。java

 1 import java.io.*;
 2 import java.util.*;
 3 import java.math.*;
 4 
 5 class Main
 6 {
 7     public static void main(String[] args)
 8     {
 9         Scanner sc = new Scanner(System.in);
10         int kase = 0;
11         while (true)
12         {
13             int n = sc.nextInt();
14             int f = sc.nextInt();
15             if (n == 0 && f == 0)  break;
16             kase++;
17             BigInteger sum = BigInteger.valueOf(0);
18             for (int i = 0; i < n; i++)
19             {
20                 BigInteger t = sc.nextBigInteger();
21                 sum = sum.add(t);
22             }
23             BigInteger aver = sum.divide(BigInteger.valueOf(f));
24             System.out.println("Bill #" + kase + " costs " + sum + ": each friend should pay " + aver);
25             System.out.println();
26         }
27     }
28 }
View Code

  原本是想按照competitive programming 1的順序慢慢來的,但是下午去參加華爲的上機筆試,有一道題是關於大數的,當時我就傻眼了,只好用c++一點一點寫代碼了...而後就決定回來把大數這點先看了。其實我也是看了cp1後才知道Java的大數類的,最開始還能本身寫點大數加法,後來參考《算法競賽入門經典》也寫了個bignum類(實際就是抄...),不過從感受不能直接拿來用不方便,並且有時還會有些要命的小bug。因此仍是用人家的好東西吧^_^python

  話說仍是第一次用Java作題,中間的小波折是不免的啦,記得之前掃過一眼說Java的類名要用Main,也沒注意,而後就RE了...也不知怎麼想起來要該類名的,靈光一閃?哈哈。不過那個輸出實在是慘不忍睹啊,我怎麼感受寫這這麼費勁呢,是還沒習慣的緣由嗎?想當初拒絕c++就是由於嫌他的輸出太麻煩,如今卻一直在用c++...至於Java,輸出...還有類,輸出一個hello world還要建一個類,在當初我看來實在太麻煩,就沒什麼好感,如今用上了,只好乖乖學了...c++

  而後我就想起了python,有大數,並且還不用建類,不少東西寫起來也挺方便,惋惜沒怎麼深刻學習,並且競賽不通用...算法

相關文章
相關標籤/搜索