小景哥哥

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

强烈推荐

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

2018-01-11

细观美剧

     

    作为一个不折不扣的美剧迷,我内心澎湃的小宇宙喷薄而出,细观美剧,感悟颇多。

    从《神盾局特工》到《闪电侠》,从《生活大爆炸》到《破产姐妹》,从《疑犯追踪》到《哥谭》,从《权利的游戏》到《西部世界》,从《天赋异禀》到《行尸走肉》,从《黑镜》到《福尔摩斯》,从《越狱》到《罪恶黑名单》,…,在美剧的世界里,你可以被强大的剧情牵引着,在扣人心弦的场景中遨游,在惊心动魄的格斗中历练,那感觉无与伦比。

    你可以跟着Coulson坐着昆式战斗机在世界各地穿越,你可以跟着quaker Daisy去震动全世界,你可以跟着Oliver或James去拯救一座城市,你可以跟着Max体验开放的美国文化,你可以跟着Shelden做去一个奇葩,你可以跟着Harry去93/4站台体验一个魔幻的奇妙世界,有太多的人物,有太多的角色,有太多的精彩,也有太多的无奈,但是美国大片的总体态势到最后都是英雄救美,完美结局。假如你看到最后结局很凄美,那我可以肯定的告诉你,你看的是假美剧。

    感悟一:需要很好的美国文化才能get到他们的笑点

    对于一些情景喜剧,比如《生活大爆炸》、《破产姐妹》等这种类型的美剧,真的需要一定的文化底蕴,才能在欣赏的过程中,体会他们所要表达的完整意义,才能get到他们的笑点,才能更好的了解到西方的文化底蕴和人文内涵。

    感悟而二:看美剧并不是仅仅浪费时间,真的可以提高英语水平

    英语一直作为短板的我,六级也是考了几次才低分飘过的人,在我考研的时候,每天都会看一集美剧,风雨无阻,大家都知道对于非英语专业的理科生来说英语单科分数线也就40分多一点,那年我的英语一成绩82(总分100),这对于一个非英语专业的普通人来说,已经相当可以了。

    感悟三:开拓视野,增长见识

    艺术来源于生活却高于生活。从体验美国文化层面来讲,还是能从一个侧面感受到开放的美国人民的生活气息,理解他们包容的意识形态,以及进取的人生态度。另一方面,不仅从感官上体验感受了一把视觉享受,还激发了想象力的脑洞,也拓展了你感知社会的眼光。

     记得字幕组、天天美剧这样的网站招募人员要求是必须看过100部美剧以上,我心里嗖的乐呵一下,奶奶的,老子看了200部也有了,虽然我口语不好,但是我听力好啊。

    我夜以继日的加班加点刷完了所有我喜欢看的美剧,然后突然就遇到了空前浩大的剧荒,没有一个可以看的了,这种感觉完全吞噬了我的小小内心,不知所措。苍天啊,大地啊,请赐予我一集美剧吧!

    问题:

    神盾局的Yoyo和闪电侠Barry谁更快?

    星际迷航为啥在太空中还能有声音?真空中不是没有粒子震动么?太空中没有空气,为啥会有火焰?

    钢铁侠遇到Max会出现什么情况?(这俩人都很好色)

    Michael和Imp合作越狱会不会更快一点?

    Finch和Sky谁的IT技术更牛?

    龙母是不是应该嫁给Oliver Queen而非John Snow?因为他俩经历很像啊。

     

    剧情:

    《神盾局》,最喜欢的美剧,没有之一。科幻+动作+大英雄主义,想象无边际,只有你想不到,没有做不到,各种奇异的人,各种奇妙的世界,完美无比。为捍卫正义可以牺牲一切。

    《闪电侠》,让Barry带你怀揣梦想穿越时空,拯救世界。

    《生活大爆炸》,一群个性独特的人毁你三观带你感悟生活,每三句话就出一个笑点,你要不笑那是因为你没文化。

    《破产姐妹》,大尺度带你闯进美国社会底层人民的生活。

    《哥谭》,为了心中的信仰拯救一座城。

    《行尸走肉》,人性的格斗。

    《黑镜》,科技太发达,脑洞大开。

     

     

     

     

    阅读全文>>

作者:Jason分类:【心情浏览(522评论(0

2018-04-13

矩阵覆盖

    10. 矩阵覆盖

     

    题目描述

    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

     

     

     

    Java代码实现

        public int RectCover(int target) {

            if (target < 1) {

                return 0;

            } else if (target == 1 || target == 2) {

                return target;

            } else {

                return RectCover(target-1) + RectCover(target-2);

            }

        }

    阅读全文>>

作者:Jason分类:【offer浏览(209评论(0

2018-08-13

1001. 害死人不偿命的(3n+1)猜想 (15分)-浙大PAT乙级真题java实现

    1001. 害死人不偿命的(3n+1)猜想 (15分)
    卡拉兹(Callatz)猜想:
    对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……
    我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?
    输入格式:
    每个测试输入包含1个测试用例,即给出自然数n的值。
    输出格式:

    输出从n计算到1需要的步数。

    输入样例

    3

    输出样例

    5


    代码链接

    阅读全文>>

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

2018-01-04

1069. 微博转发抽奖(20)–PAT乙级真题java实现

    1069. 微博转发抽奖(20)–PAT乙级真题java实现
     
    小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包。请你编写程序帮助他确定中奖名单。 
    输入格式: 
    输入第一行给出三个正整数M(<= 1000)、N和S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从1开始)。随后M行,顺序给出转发微博的网友的昵称(不超过20个字符、不包含空格回车的非空字符串)。 
    注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。 
    输出格式: 
    按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出“Keep going…”。 
    输入样例1: 
    9 3 2 
    Imgonnawin! 
    PickMe 
    PickMeMeMeee 
    LookHere 
    Imgonnawin! 
    TryAgainAgain 
    TryAgainAgain 
    Imgonnawin! 
    TryAgainAgain 
    输出样例1: 
    PickMe 
    Imgonnawin! 
    TryAgainAgain 
    输入样例2: 
    2 3 5 
    Imgonnawin! 
    PickMe 
    输出样例2: 
    Keep going…
     
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    public class Main {
        public static void main(String[] args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String[] s = br.readLine().split(" ");
            int total = Integer.parseInt(s[0]);
            int interval = Integer.parseInt(s[1]);
            int prize = Integer.parseInt(s[2]);
            List<String> list = new ArrayList<>();
            boolean flag = false;
            for(int i = 1; i <= total; i++) {
                String user = br.readLine();
                if(list.contains(user))
                    prize++;
                if(i == prize) {
                    System.out.println(user);
                    list.add(user);
                    flag = true;
                    prize += interval;
                }
            }
            if(!flag)
                System.out.println("Keep going...");
        }
    }
    阅读全文>>

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

2018-09-09

54.字符流中第一个不重复的字符

    54.字符流中第一个不重复的字符

    题目描述

    请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
    输出描述:
    如果当前字符流没有存在出现一次的字符,返回#字符。

     



    public class Solution {

    int[] hashtable = new int[256];
        StringBuffer s = new StringBuffer();
        //Insert one char from stringstream
        public void Insert(char ch)
        {
            s.append(ch);
            if(hashtable[ch] == 0)
                hashtable[ch] = 1;
            else hashtable[ch] += 1;
        }
      //return the first appearence once char in current stringstream
        public char FirstAppearingOnce()
        {
          char[] str=s.toString().toCharArray();
          for(char c:str)
          {
              if(hashtable[c] == 1)
                  return c;
          }
          return '#';
        }
    }

    阅读全文>>

作者:Jason分类:【offer浏览(214评论(0

2018-08-24

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

2018-09-09

1009. 说反话 (20)-浙大PAT乙级真题java实现

    1009. 说反话 (20)
    给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
    输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
    输出格式:每个测试用例的输出占一行,输出倒序后的句子。
    输入样例:
    Hello World Here I Come
    输出样例:
    输入样例:
    Come I Here World Hello 


    阅读全文>>

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

2018-01-04

Life Race Against Time

    生命中五样东西不能丢:

    扬在脸上的自信,长在心底的善良,融进血里的骨气,两侧外泄的霸气,刻进生命里的坚强。

    If so, life will be 'Infinity'.


    阅读全文>>

作者:Jason分类:【心情浏览(339评论(0

2018-01-07

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

2018-09-09