小景哥哥

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

强烈推荐

1041. 考试座位号(15)-浙大PAT乙级真题java实现

    1041. 考试座位号(15) 
    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。 
    输入格式: 
    输入第一行给出一个正整数N(<=1000),随后N行,每行给出一个考生的信息:“准考证号 试机座位号 考试座位号”。其中准考证号由14位数字组成,座位从1到N编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。考生信息之后,给出一个正整数M(<=N),随后一行中给出M个待查询的试机座位号码,以空格分隔。 
    输出格式: 
    对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用1个空格分隔。 
    输入样例: 

    10120150912233 2 4 
    10120150912119 4 1 
    10120150912126 1 3 
    10120150912002 3 2 

    3 4 
    输出样例: 
    10120150912002 2 
    10120150912119 1


    阅读全文>>

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

2018-01-23

1013. 数素数 (20)-PAT乙级真题-浙大PAT乙级真题java实现

    1013. 数素数 (20) 
    令Pi表示第i个素数。现任给两个正整数M <= N <= 10^4,请输出PM到PN的所有素数。 
    输入格式: 
    输入在一行中给出M和N,其间以空格分隔。 
    输出格式: 
    输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。 
    输入样例: 
    5 27 
    输出样例: 
    11 13 17 19 23 29 31 37 41 43 
    47 53 59 61 67 71 73 79 83 89 
    97 101 103


    阅读全文>>

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

2018-01-06

1018. 锤子剪刀布 (20)-浙大PAT乙级真题java实现

    1018. 锤子剪刀布 (20)
    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
    输入格式:
    输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
    输出格式:
    输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
    输入样例:
    10
    C J
    J B
    C B
    B B
    B C
    C C
    C B
    J B
    B C
    J J
    输出样例:
    5 3 2
    2 3 5
    B B


     

    阅读全文>>

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

2018-01-11

1039. 到底买不买(20)-浙大PAT乙级真题java实现

    1039. 到底买不买(20) 
    小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色.例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。 
    这里写图片描述 
    输入格式: 
    每个输入包含1个测试用例。每个测试用例分别在2行中先后给出摊主的珠串和小红想做的珠串,两串都不超过1000个珠子。 
    输出格式: 
    如果可以买,则在一行中输出“Yes”以及有多少多余的珠子;如果不可以买,则在一行中输出“No”以及缺了多少珠子。其间以1个空格分隔。 
    输入样例1: 
    ppRYYGrrYBR2258 
    YrR8RrY 
    输出样例1: 
    Yes 8 
    输入样例2: 
    ppRYYGrrYB225 
    YrR8RrY 
    输出样例2: 
    No 2


    阅读全文>>

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

2018-01-23

1002. 写出这个数 (20)-浙大PAT乙级真题java实现

    1002. 写出这个数 (20)
    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
    输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。
    输出格式:
    在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
    输入样例
    1234567890987654321123456789
    输出样例
    yi san wu

     

     

     
     
    阅读全文>>

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

2018-01-04

1068. 万绿丛中一点红(20)–PAT乙级真题java实现

    1068. 万绿丛中一点红(20)–PAT乙级真题java实现
     
    对于计算机而言,颜色不过是像素点对应的一个24位的数值。现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大。 
    输入格式: 
    输入第一行给出三个正整数,分别是M和N(<= 1000),即图像的分辨率;以及TOL,是所求像素点与相邻点的颜色差阈值,色差超过TOL的点才被考虑。随后N行,每行给出M个像素的颜色值,范围在[0, 224)内。所有同行数字间用空格或TAB分开。 
    输出格式: 
    在一行中按照“(x, y): color”的格式输出所求像素点的位置以及颜色值,其中位置x和y分别是该像素在图像矩阵中的列、行编号(从1开始编号)。如果这样的点不唯一,则输出“Not Unique”;如果这样的点不存在,则输出“Not Exist”。 
    输入样例1: 
    8 6 200 
    0 0 0 0 0 0 0 0 
    65280 65280 65280 16711479 65280 65280 65280 65280 
    16711479 65280 65280 65280 16711680 65280 65280 65280 
    65280 65280 65280 65280 65280 65280 165280 165280 
    65280 65280 16777015 65280 65280 165280 65480 165280 
    16777215 16777215 16777215 16777215 16777215 16777215 16777215 16777215 
    输出样例1: 
    (5, 3): 16711680 
    输入样例2: 
    4 5 2 
    0 0 0 0 
    0 0 3 0 
    0 0 0 0 
    0 5 0 0 
    0 0 0 0 
    输出样例2: 
    Not Unique 
    输入样例3: 
    3 3 5 
    1 2 3 
    3 4 5 
    5 6 7 
    输出样例3: 
    Not Exist
    分析:首先这个点必须是唯一的,所以用map标记如果不是唯一的点就不用考虑了~接着对于每个点,判断它的周围八个点与它的差值是否大于阈值,如果有一个点没有满足大于阈值就return false~最后记得输入的时候是列、行——m、n,输出的时候也是列、行坐标.
     
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.HashMap;
    import java.util.Map;
    public class Main {
        static int dir[][] = new int[][]{{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}};
        static int[][] screen = new int[1001][1001];
        static int tol;
        static int n;
        static int m;
        public static boolean judge(int i, int j) {
            for (int k = 0; k < 8; k++) {
                int tx = i + dir[k][0];
                int ty = j + dir[k][1];
                if (tx >= 0 && tx < n && ty >= 0 && ty < m && screen[i][j] - screen[tx][ty] >= 0 - tol && screen[i][j] - screen[tx][ty] <= tol)
                    return false;
            }
            return true;
        }
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int cnt = 0, x = 0, y = 0;
            String[] s = br.readLine().split(" ");
            m = Integer.parseInt(s[0]);
            n = Integer.parseInt(s[1]);
            tol = Integer.parseInt(s[2]);
            
            Map map = new HashMap<>();
            for(int i = 0; i < n; i++) {
                String[] sp = br.readLine().split("\\s+|\t");
                for(int j = 0; j < m; j++) {
                    screen[i][j] = Integer.parseInt(sp[j]);
                    if(map.containsKey(screen[i][j]))
                        map.put(screen[i][j], map.get(screen[i][j]) + 1);
                    else
                        map.put(screen[i][j], 1);
                }
            }
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    if (map.get(screen[i][j]) == 1 && judge(i, j) == true) {
                        cnt++;
                        x = i + 1;
                        y = j + 1;
                    }
                }
            }
            if (cnt == 1)
                System.out.printf("(%d, %d): %d", y, x, screen[x-1][y-1]);
            else if (cnt == 0)
                System.out.printf("Not Exist");
            else
                System.out.printf("Not Unique");
        }
    }
    阅读全文>>

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

2018-09-09

1070. 结绳(25)–PAT乙级真题java实现

    1070. 结绳(25)–PAT乙级真题java实现
     
    给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。 
    给定N段绳子的长度,你需要找出它们能串成的绳子的最大长度。
    这里写图片描述

    输入格式: 
    每个输入包含1个测试用例。每个测试用例第1行给出正整数N (2 <= N <= 104);第2行给出N个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过104。 
    输出格式: 
    在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。 
    输入样例: 

    10 15 12 3 4 13 1 15 
    输出样例: 
    14
     
    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[] s = new int[n];
            String[] sp = br.readLine().split(" ");
            for(int i = 0; i < n; i++)
                s[i]  = Integer.parseInt(sp[i]);
            Arrays.sort(s);
            int res = s[0];
            for(int i = 1; i < n; i++)
                res = (res + s[i]) / 2;
            System.out.println(res);
        }
    }

     

    阅读全文>>

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

2018-09-09

1026. 程序运行时间(15)-浙大PAT乙级真题java实现

    1026. 程序运行时间(15) 
    要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数f的运行时间,我们只要在调用f之前先调用clock(),获得一个时钟打点数C1;在f执行完成后再调用clock(),获得另一个时钟打点数C2;两次获得的时钟打点数之差(C2-C1)就是f运行所消耗的时钟打点数,再除以常数CLK_TCK,就得到了以秒为单位的运行时间。这里不妨简单假设常数CLK_TCK为100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。 
    输入格式: 
    输入在一行中顺序给出2个整数C1和C1。注意两次获得的时钟打点数肯定不相同,即C1 < C2,并且取值在[0, 10^7]。 
    输出格式: 
    在一行中输出被测函数运行的时间。运行时间必须按照“hh:mm:ss”(即2位的“时:分:秒”) 
    格式输出;不足1秒的时间四舍五入到秒。 
    输入样例: 
    123 4577973 
    输出样例: 
    12:42:59


    阅读全文>>

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

2018-01-18

1050. 螺旋矩阵(25)-浙大PAT乙级真题java实现

    1050. 螺旋矩阵(25) 
    本题要求将给定的N个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第1个格子开始,按顺时针螺旋方向填充。要求矩阵的规模为m行n列,满足条件:m*n等于N;m>=n;且m-n取所有可能值中的最小值。

    输入格式: 
    输入在第1行中给出一个正整数N,第2行给出N个待填充的正整数。所有数字不超过104,相邻数字以空格分隔。

    输出格式: 
    输出螺旋矩阵。每行n个数字,共m行。相邻数字以1个空格分隔,行末不得有多余空格。

    输入样例: 
    12 
    37 76 20 98 76 42 53 95 60 81 58 93

    输出样例: 
    98 95 93 
    42 37 81 
    53 20 76 
    58 60 76


    思路:

    1.求出n和m的值

    2.用二维数组来存储答案,最后数序输出。

    3.重点是如何对二位数组进行赋值,从而达到螺旋非增序列。

    4.方法就是按照当前位置的上下左右是否可用,来分为8种情况,根据每种情况来循环赋值即可。


    阅读全文>>

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

2018-01-25

1023. 组个最小数 (20)-浙大PAT乙级真题java实现

    1023. 组个最小数 (20) 
    给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。现给定数字,请编写程序输出能够组成的最小的数。 
    输入格式: 
    每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥 
    有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。 
    输出格式: 
    在一行中输出能够组成的最小的数。 
    输入样例: 
    2 2 0 0 0 3 0 0 1 0 
    输出样例: 
    10015558


    阅读全文>>

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

2018-01-17