小景哥哥

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

强烈推荐

1015. 德才论 (25)-PAT乙级真题-浙大PAT乙级真题java实现

    1015. 德才论 (25) 
    宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。” 
    现给出一批考生的德才分数,请根据司马光的理论给出录取排名。 
    输入格式: 
    输入第1行给出3个正整数,分别为:N(<=10^5),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。 
    随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。 
    输出格式: 
    输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。 
    输入样例: 
    14 60 80 
    10000001 64 90 
    10000002 90 60 
    10000011 85 80 
    10000003 85 80 
    10000004 80 85 
    10000005 82 77 
    10000006 83 76 
    10000007 90 78 
    10000008 75 79 
    10000009 59 90 
    10000010 88 45 
    10000012 80 100 
    10000013 90 99 
    10000014 66 60 
    输出样例: 
    12 
    10000013 90 99 
    10000012 80 100 
    10000003 85 80 
    10000011 85 80 
    10000004 80 85 
    10000007 90 78 
    10000006 83 76 
    10000005 82 77 
    10000002 90 60 
    10000014 66 60 
    10000008 75 79 
    10000001 64 90


    阅读全文>>

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

2018-01-11

1028. 人口普查(20)-浙大PAT乙级真题java实现

    1028. 人口普查(20) 
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。 
    输入格式: 
    输入在第一行给出正整数N,取值在(0, 10^5];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。 
    输出格式: 
    在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。 
    输入样例: 

    John 2001/05/12 
    Tom 1814/09/06 
    Ann 2121/01/30 
    James 1814/09/05 
    Steve 1967/11/20 
    输出样例: 
    3 Tom John


    阅读全文>>

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

2018-01-18

1057.数零壹(20)--PAT乙级真题java实现

    1057.数零壹(20)–PAT乙级真题java实现

    给定一串长度不超过10^5的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串“PAT (Basic)”,其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个0、4个1。

    输入格式:

    输入在一行中给出长度不超过105、以回车结束的字符串。

    输出格式:

    在一行中先后输出0的个数和1的个数,其间以空格分隔。

    输入样例:

    PAT (Basic)

    输出样例:

    3 4

     
    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().toLowerCase();
     
            int sum = 0;
            char[] chs = s.toCharArray();
            for(int i = 0; i < chs.length; i++) {
                if(chs[i] >= 'a' && chs[i] <= 'z') {
                    sum += chs[i] - 'a' + 1;
                }
            }
            int one = 0, zero = 0;
            while(sum != 0) {
                if(sum % 2 == 0)
                    zero++;
                else
                    one++;
                sum = sum / 2;
            }
            System.out.println(zero + " " + one);
        }
    }
    阅读全文>>

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

2018-09-08

1021. 个位数统计 (15)-浙大PAT乙级真题java实现

    1021. 个位数统计 (15) 
    给定一个k位整数N = dk-1*10k-1 + … + d1*101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如: 
    给定N = 100311,则有2个0,3个1,和1个3。 
    输入格式: 
    每个输入包含1个测试用例,即一个不超过1000位的正整数N。 
    输出格式: 
    对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。 
    要求按D的升序输出。 
    输入样例: 
    100311 
    输出样例: 
    0:2 
    1:3 
    3:1


    阅读全文>>

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

2018-01-17

1064.朋友数(20)–PAT乙级真题java实现

    1064.朋友数(20)–PAT乙级真题java实现

    如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。

    输入格式:

    输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104。

    输出格式:

    首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

    输入样例:

    8

    123 899 51 998 27 33 36 12

    输出样例:

    4

    3 6 9 26

     

     

     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.TreeSet;
    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());
            Set set = new TreeSet<>();
            String[] s = br.readLine().trim().split(" ");
            for(int i = 0; i < n; i++) {
                int t = Integer.parseInt(s[i]);
                int fNum = 0;
                while(t > 0) {
                    fNum += (t % 10);
                    t /= 10;
                }
                set.add(fNum);
            }
            Iterator iter = set.iterator();
            System.out.println(set.size());
            boolean flag = false;
            while(iter.hasNext()) {
                if(flag) {
                    System.out.print(" " + iter.next());
                }else {
                    System.out.print(iter.next());
                    flag = true;
                }
            }
        }
    }
    阅读全文>>

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

2018-09-08

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

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


    
    

     

     

     


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

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

    输入格式:

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

    输出格式:

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

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


    
    

     

     

     


     

     

    阅读全文>>

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

2018-01-18

1006. 换个格式输出整数 (15)-浙大PAT乙级真题java实现

    1006. 换个格式输出整数 (15)
    让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。
    输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。
    输出格式:每个测试用例的输出占一行,用规定的格式输出n。
    输入样例1:
    234
    输出样例1:

    BBSSS1234
    输入样例2:
    23
    输出样例2:
    SS123


    阅读全文>>

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

2018-01-04

1037. 在霍格沃茨找零钱(20)-浙大PAT乙级真题java实现

    1037. 在霍格沃茨找零钱(20) 
    如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 —— 就如海格告诉哈利的:“十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可,很容易。”现在,给定哈利应付的价钱P和他实付的钱A,你的任务是写一个程序来计算他应该被找的零钱。 
    输入格式: 
    输入在1行中分别给出P和A,格式为“Galleon.Sickle.Knut”,其间用1个空格分隔。这里Galleon是[0, 10^7]区间内的整数,Sickle是[0, 17)区间内的整数,Knut是[0, 29)区间内的整数。 
    输出格式: 
    在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。 
    输入样例1: 
    10.16.27 14.1.28 
    输出样例1: 
    3.2.1 
    输入样例2: 
    14.1.28 10.16.27 
    输出样例2: 
    -3.2.1


    阅读全文>>

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

2018-01-23

1067. 试密码(20)–PAT乙级真题java实现

    1067. 试密码(20)–PAT乙级真题java实现
     
    当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。 
    输入格式: 
    输入在第一行给出一个密码(长度不超过20的、不包含空格、Tab、回车的非空字符串)和一个正整数N(<= 10),分别是正确的密码和系统允许尝试的次数。随后每行给出一个以回车结束的非空字符串,是用户尝试输入的密码。输入保证至少有一次尝试。当读到一行只有单个#字符时,输入结束,并且这一行不是用户的输入。 
    输出格式: 
    对用户的每个输入,如果是正确的密码且尝试次数不超过N,则在一行中输出“Welcome in”,并结束程序;如果是错误的,则在一行中按格式输出“Wrong password: 用户输入的错误密码”;当错误尝试达到N次时,再输出一行“Account locked”,并结束程序。 
    输入样例1: 
    Correct%pw 3 
    correct%pw 
    Correct@PW 
    whatisthepassword! 
    Correct%pw 

    输出样例1: 
    Wrong password: correct%pw 
    Wrong password: Correct@PW 
    Wrong password: whatisthepassword! 
    Account locked 
    输入样例2: 
    cool@gplt 3 
    coolman@gplt 
    coollady@gplt 
    cool@gplt 
    try again 

    输出样例2: 
    Wrong password: coolman@gplt 
    Wrong password: coollady@gplt 
    Welcome in

    分析: 
    1.如果已经是”#”了就不要继续下面的判断了,不然可能输出Wrong password: “#” 
    2.如果密码错误并且达到了尝试的次数,是先输出Wrong password那句紧接着输出Account locked那句 
    3.Wrong password: 后面有个空格。
     
    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().split(" ");
            String pwd = s[0];
            int times = Integer.parseInt(s[1]);
            while(times > 0) {
                String pass = br.readLine();
                if(pass.equals(pwd)) {
                    System.out.println("Welcome in");
                    break;
                }else if(pass.equals("#")) {
                    break;
                }else {
                    System.out.println("Wrong password: " + pass);
                    times--;
                }
            }
            if(times <= 0)
                System.out.println("Account locked");
        }
    }
    阅读全文>>

作者:小景哥哥分类:【pat浏览(443评论(0

2018-09-09

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浏览(448评论(0

2018-01-04