2012-07-14 07:48:44Morris

[UVA][Java] 11821 - High-Precision Number


Problem D

High-Precision Number
Input: Standard Input

Output: Standard Output

 

A number with 30 decimal digits of precision can be represented by a structure type as shown in the examples below. It includes a 30-element integer array (digits), a single integer (decpt) to represent the position of the decimal point and an integer (or character) to represent the sign (+/-). For example, the value -218.302869584 might be stored as

 














digits

 


 

0

 


decpt

 

3

 
 

 

 

 

 






sign

 

-1

 
 

 

 


The value 0.0000123456789 might be represented as follows.














digits

 


 

0

 


decpt

 

-4

 
 

 

 

 

 






sign

 

1

 
 

 

 


Your task is to write a program to calculate the sum of high-precision numbers.

 

Input

The first line contains a positive integer n (1≤n≤100) indicating the number of groups of high-precision numbers (maximum 30 significant digits). Each group includes high-precision numbers (one number in a line) and a line with only 0 indicating the end of each group. A group can contain 100 numbers at most.

 

Output

For each group, print out the sum of high-precision numbers (one value in a line). All zeros after the decimal point located behind the last non-zero digit must be discarded

 

 

 

 

 

 

 

 

 

 

 

Sample Input

Output for Sample Input

4
4.12345678900000000005

-0.00000000012

0

-1300.1

1300.123456789

0.0000000012345678912345

0

1500.61345975

-202.004285

-8.60917475

0

-218.302869584

200.0000123456789

0

4.12345678888000000005
0.0234567902345678912345

1290

-18.3028572383211


Problemsetter: Seksun Suwanmanee

 import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {     
        Scanner cin = new Scanner(System.in);
        int t = cin.nextInt();
        while(t-- != 0) {
            BigDecimal sum = new BigDecimal("0");
            String next;
            while(true) {
                next = cin.next();
                if(next.compareTo("0") == 0)
                    break;
                sum = sum.add(new BigDecimal(next));
            }
            next = sum.toPlainString();
            int j = next.length()-1;
            while(next.charAt(j) == '0')    j--;
            if(next.charAt(j) == '.')    j--;
            System.out.println(next.substring(0, j+1));
        }
    }
}