• PAT甲级练习题1001、1002


    1001 A+B Format (20 分)

     

    Calculate a+b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).

    Input Specification:

    Each input file contains one test case. Each case contains a pair of integers a and b where −. The numbers are separated by a space.

    Output Specification:

    For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.

    Sample Input:

    -1000000 9
    

    Sample Output:

    -999,991


    解题时注意取余时i的位置
    满分代码:
    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while (in.hasNextInt()) {
                int a = in.nextInt();
                int b = in.nextInt();
                int res = a+b;
                String A = String.valueOf(res);
                   if(res<0) {
                       int len = A.length();
                       int c = (len-1)%3;
                       System.out.print('-');
                       for(int i=1;i<=c;i++) {
                           System.out.print(A.charAt(i));
                       }
                       if(c!=0&&len>3) System.out.print(',');
                       
                       for(int i=c+1;i<A.length();i++) {
                           if((i-c-1)!=0&&(i-c-1)%3==0&&i!=A.length()-1) System.out.print(',');
                           System.out.print(A.charAt(i));
                       }
                       System.out.println();
                   }else {
                       int len = A.length();
                       int c = len%3;
                       for(int i=0;i<c;i++) {
                           System.out.print(A.charAt(i));
                       }
                       if(c!=0&&len>3) System.out.print(',');
                       
                       for(int i=c;i<A.length();i++) {
                           if((i-c)!=0&&(i-c)%3==0&&i!=A.length()-1) System.out.print(',');
                           System.out.print(A.charAt(i));
                       }
                       System.out.println();
                   }
            }
            in.close();
        }
    }

    1002 A+B for Polynomials (25 分)

     

    This time, you are supposed to find A+B where A and B are two polynomials.

    Input Specification:

    Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:

    N1​​ aN1​​​​ N2​​ aN2​​​​ ... NK​​ aNK​​​​

    where K is the number of nonzero terms in the polynomial, Ni​​ and aNi​​​​ (,) are the exponents and coefficients, respectively. It is given that 1,0.

    Output Specification:

    For each test case you should output the sum of A and B in one line, with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.

    Sample Input:

    2 1 2.4 0 3.2
    2 2 1.5 1 0.5
    

    Sample Output:

    3 2 1.5 1 2.9 0 3.2

    注意为0项需要溢出map表
    满分代码:
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Main{
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while (in.hasNextInt()) {
                int keyMax = 0;
                int up = in.nextInt();
                Map<Integer, Double> hm = new HashMap<>();
                for (int i = 0; i < up; i++) {
                    int x = in.nextInt();
                    if (x > keyMax)
                        keyMax = x;
                    hm.put(x, in.nextDouble());
                }
                int down = in.nextInt();
                for (int i = 0; i < down; i++) {
                    int x = in.nextInt();
                    if (x > keyMax)
                        keyMax = x;
    
                    if (!hm.containsKey(x)) {
                        hm.put(x, in.nextDouble());
                    } else {
                        double y = hm.get(x);
                        y += in.nextDouble();
                        if(y!=0)
                        hm.put(x, y);
                        else hm.remove(x);
                    }
                }
                if(hm.size()==0) System.out.print("0");
                else
                    System.out.print(hm.size() + " ");
                int sign = 0;
                for (int i = keyMax; i >= 0; i--) {
                    if (hm.containsKey(i)) {
                        sign++;
                            
                        System.out.print(i + " ");
                        if (sign != hm.size())
                            System.out.print(String.format("%.1f", hm.get(i)) + " ");
                        else
                            System.out.print(String.format("%.1f", hm.get(i)));
                    }
                }
            }
        }
    }
     
  • 相关阅读:
    封装ANSI,UNICODE,UTF8互相转换类
    关于编码ansi、GB2312、unicode与utf-8的区别
    dojo中引入FusionCharts柱状图报错
    FusionCharts 3D环饼图报错
    FusionCharts 3D环饼图
    FusionCharts 2D环饼图
    error:WINDOWS.H already included错误解释
    正视心中野兽是与孩子共处的救赎之路——Leo鉴书44
    dojo中取查询出来的地市维表数据的id
    FusionCharts封装-单系列图组合
  • 原文地址:https://www.cnblogs.com/godoforange/p/10895063.html
Copyright © 2020-2023  润新知