小景哥哥

世界很大,而我们还需要再成长!

强烈推荐

1016. 部分A+B (15)-PAT乙级真题-浙大PAT乙级真题java实现

    1016. 部分A+B (15) 
    正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。 
    现给定A、DA、B、DB,请编写程序计算PA + PB。 
    输入格式: 
    输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 10^10。 
    输出格式: 
    在一行中输出PA + PB的值。 
    输入样例1: 
    3862767 6 13530293 3 
    输出样例1: 
    399 
    输入样例2: 
    3862767 1 13530293 8 
    输出样例2: 
    0


    阅读全文>>

作者:Jason分类:【pat浏览(332评论(0

2018-01-11

1029. 旧键盘(20)-浙大PAT乙级真题java实现

    1029. 旧键盘(20) 
    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。 
    输入格式: 
    输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。 
    输出格式: 
    按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。 
    输入样例: 
    7_This_is_a_test 
    _hs_s_a_es 
    输出样例: 
    7TI


    阅读全文>>

作者:Jason分类:【pat浏览(312评论(0

2018-01-18

1027. 打印沙漏(20)-浙大PAT乙级真题java实现

    1027. 打印沙漏(20) 
    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印


    
    

     

     

     


    所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

    给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

    输入格式:

    输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。

    输出格式:

    首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

    输入样例: 
    19 * 
    输出样例:


    
    

     

     

     


     

     

    阅读全文>>

作者:Jason分类:【pat浏览(373评论(0

2018-01-18

1024. 科学计数法 (20)--浙大PAT乙级真题java实现

    1024. 科学计数法 (20) 
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]”.”[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。 
    现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。 
    输入格式: 
    每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。 
    输出格式: 
    对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。 
    输入样例1: 
    +1.23400E-03 
    输出样例1: 
    0.00123400 
    输入样例2: 
    -1.2E+10 
    输出样例2: 
    -12000000000


    阅读全文>>

作者:Jason分类:【pat浏览(313评论(0

2018-01-17

1071.小赌怡情(15)--PAT乙级真题java实现

    1071.小赌怡情(15)--PAT乙级真题java实现
     
    常言道“小赌怡情”。这是一个很简单的小游戏:首先由计算机给出第一个整数;然后玩家下注赌第二个整数将会比第一个数大还是小;玩家下注t个筹码后,计算机给出第二个数。若玩家猜对了,则系统奖励玩家t个筹码;否则扣除玩家t个筹码。
    注意:玩家下注的筹码数不能超过自己帐户上拥有的筹码数。当玩家输光了全部筹码后,游戏就结束。
    输入格式:
    输入在第一行给出2个正整数T和K(<=100),分别是系统在初始状态下赠送给玩家的筹码数、以及需要处理的游戏次数。随后K行,每行对应一次游戏,顺序给出4个数字:
    n1 b t n2
    其中n1和n2是计算机先后给出的两个[0, 9]内的整数,保证两个数字不相等。b为0表示玩家赌“小”,为1表示玩家赌“大”。t表示玩家下注的筹码数,保证在整型范围内。
    输出格式:
    对每一次游戏,根据下列情况对应输出(其中t是玩家下注量,x是玩家当前持有的筹码量):
    玩家赢,输出
    Win t! Total = x.
    玩家输,输出
    Lose t. Total = x.
    玩家下注超过持有的筹码量,输出
    Not enough tokens. Total = x.
    玩家输光后,输出
    Game Over.
    并结束程序。
    输入样例1:
    100 4
    8 0 100 2
    3 1 50 1
    5 1 200 6
    7 0 200 8
    输出样例1:
    Win 100! Total = 200.
    Lose 50. Total = 150.
    Not enough tokens. Total = 150.
    Not enough tokens. Total = 150.
    输入样例2:
    100 4
    8 0 100 2
    3 1 200 1
    5 1 200 6
    7 0 200 8
    输出样例2:
    Win 100! Total = 200.
    Lose 200. Total = 0.
    Game Over.
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class Main {
        
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String[] s = br.readLine().trim().split(" ");
            int T = Integer.parseInt(s[0]);
            int K = Integer.parseInt(s[1]);
            
            for(int i = 0; i < K; i++) {
                String[] sp = br.readLine().trim().split(" ");
                int n1 = Integer.parseInt(sp[0]);
                int b = Integer.parseInt(sp[1]);
                int t = Integer.parseInt(sp[2]);
                int n2 = Integer.parseInt(sp[3]);
                if(t > T) {
                    System.out.println("Not enough tokens.  Total = "+ T +".");
                    continue;
                }
                if((n1 < n2 && b == 1)||(n1 > n2 && b == 0)) {
                    T = T + t;
                    System.out.println("Win "+t+"!  Total = "+ T +".");
                }else {
                    T = T - t;
                    System.out.println("Lose "+ t +".  Total = "+ T +".");
                }
                
                if(T == 0) {
                    System.out.println("Game Over.");
                    break;
                }
            }
        }
    }

     

    阅读全文>>

作者:Jason分类:【pat浏览(588评论(0

2018-09-15

1010. 一元多项式求导 (25)-浙大PAT乙级真题java实现

    1010. 一元多项式求导 (25)
    设计函数求一元多项式的导数。(注:x^n(n为整数)的一阶导数为n*x^(n-1)。)
    输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
    输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
    输入样例:
    3 4 -5 2 6 1 -2 0
    输出样例:
    12 3 -10 1 6 0

    注意:记得考虑没有输入的情况。以及,输入的只是常数项的情况。这个时候是要输出”0 0″的。


    阅读全文>>

作者:Jason分类:【pat浏览(402评论(0

2018-01-04

1019. 数字黑洞 (20)-浙大PAT乙级真题java实现

    1019. 数字黑洞 (20) 
    给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序, 
    再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字。一直重复 
    这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。 
    例如,我们从6767开始,将得到 
    7766 – 6677 = 1089 
    9810 – 0189 = 9621 
    9621 – 1269 = 8352 
    8532 – 2358 = 6174 
    7641 – 1467 = 6174 
    … … 
    现给定任意4位正整数,请编写程序演示到达黑洞的过程。 
    输入格式: 
    输入给出一个(0, 10000)区间内的正整数N。 
    输出格式: 
    如果N的4位数字全相等,则在一行内输出“N – N = 0000”;否则将计算的每一步在 
    一行内输出,直到6174作为差出现,输出格式见样例。注意每个数字按4位数格式输出。 
    输入样例1: 
    6767 
    输出样例1: 
    7766 – 6677 = 1089 
    9810 – 0189 = 9621 
    9621 – 1269 = 8352 
    8532 – 2358 = 6174 
    输入样例2: 
    2222 
    输出样例2: 
    2222 – 2222 = 0000


    阅读全文>>

作者:Jason分类:【pat浏览(314评论(0

2018-01-17

1003. 我要通过!(20)-浙大PAT乙级真题Java实现

    1003. 我要通过!(20)
    “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
    得到“答案正确”的条件是:
    1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
    2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
    3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
    现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
    输入格式:
    每个测试输入包含1个测试用例。第1行给出一个自然数n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。
    输出格式:
    每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

    输入样例:
    8
    PAT
    PAAT
    AAPATAA
    AAPAATAAAA
    xPATx
    PT
    Whatever
    APAAATAA
    输出样例:
    YES
    YES
    YES
    YES
    NO
    NO

    NO
    NO

    思路:

    条件一最基本,先忽略。条件二,xPATx 就是正确的形式;在此基础上,如果 aPbTc 是正确的,那么 aPbATca 也是正确的。如果二者放在一起考虑,就是中间每增加一个A,后面就增加一个a,似乎数学关系出来了。我们知道aPbTc中a b c 段都只能包含“A",其长度分别为len(a)、len(b)、len(c),则其关系满足len(a)*len(b) = len(c)!这完美的契合了条件二与条件三,xPATx 就是当len(b) = 1,(a=x,c=c,b=A)的情况,在此基础上演化到条件三B中每增加一个A,c中相应增加一段”a“以上的乘法关系式成立。


    阅读全文>>

作者:Jason分类:【pat浏览(402评论(0

2018-01-04

1042. 字符统计(20)-浙大PAT乙级真题java实现

    1042. 字符统计(20) 
    请编写程序,找出一段给定文字中出现最频繁的那个英文字母。 
    输入格式: 
    输入在一行中给出一个长度不超过1000的字符串。字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束(回车不算在内)。 
    输出格式: 
    在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。 
    输入样例: 
    This is a simple TEST. There ARE numbers and other symbols 1&2&3……….. 
    输出样例: 
    e 7


    阅读全文>>

作者:Jason分类:【pat浏览(340评论(0

2018-01-23

1065.单身狗(25)–PAT乙级真题java实现

    1065.单身狗(25)–PAT乙级真题java实现
     
    “单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。 
    输入格式: 
    输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数;随后N行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(<=10000),为参加派对的总人数;随后一行给出这M位客人的ID,以空格分隔。题目保证无人重婚或脚踩两条船。 
    输出格式: 
    首先第一行输出落单客人的总人数;随后第二行按ID递增顺序列出落单的客人。ID间用1个空格分隔,行的首尾不得有多余空格。 
    输入样例: 

    11111 22222 
    33333 44444 
    55555 66666 

    55555 44444 10000 88888 22222 11111 23333 
    输出样例: 

    10000 23333 44444 55555 88888

    分析: 
    设立数组couples[i] = j表示i的对象是j。一开始先设置为都是-1。设立数组appear表示某人的对象是否来到了派对上。接收数据的时候,对于每一对wife和husband,将couple的husband设置为wife,wife设置为husband,表示他俩是一对。对于每一个需要判断的人,将其存储在guest数组里面,如果它不是单身的(也就是如果它的couple[guest[i]] != -1)那么就将它对象的appear设置为1,表示他对象的对象(也就是他自己)来到了派对。这样所有appear不为1的人,对象是没有来到派对的。
     
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine());
            int couples[] = new int[100000];
            int appear[] = new int[100000];
            for(int i = 0; i < 100000; i++) {
                couples[i] = -1;
                appear[i] = -1;
            }
            for(int i = 0; i < N; i++) {
                String[] s = br.readLine().split(" ");
                int wife = Integer.parseInt(s[0]);
                int husband = Integer.parseInt(s[1]);
                couples[wife] = husband;
                couples[husband] = wife;
            }
            int M = Integer.parseInt(br.readLine());
            String[] guest = br.readLine().split(" ");
            int minus = 0;
            for(int i = 0; i < M; i++) {
                int g = Integer.parseInt(guest[i]);
                if(couples[g] != -1)
                    appear[couples[g]] = 1;
                if(couples[g]!=-1 && appear[couples[g]]==1 && appear[g]==1){
                    minus += 2;
                }
            }
            Arrays.sort(guest);   
            boolean flag = false; 
            System.out.println(guest.length - minus);
            for(int i = 0; i < guest.length;i++) {
                int g = Integer.parseInt(guest[i]);
                if(appear[g] != 1) {
                    if(flag) {
                        System.out.print(" " + guest[i]);
                    }else {
                        System.out.print(guest[i]);
                        flag = true;
                    }
                }
            }
        }
    }
    阅读全文>>

作者:Jason分类:【pat浏览(462评论(0

2018-09-09