日记/2020/05/14
感觉一天没干什么事情,一天就结束了,下午的课因为是不去机房的线上上课,老师也没看直播,就感觉放了一天假。晚上体验了第一次打CF,因为外网的原因前半个小时一直在卡,后面拿到了镜像网址开始做题,虽热是div3我还是只做出了两道题,太卑微了。
日记/2020/05/13
回校第一周的体验已经过半了,总体来说还是在寝室里上课舒服,但是在教室上课的效率确实高了不少。
GPLT/L1-048
L1-048 矩阵A乘以B(模拟)给定两个矩阵 $A$ 和 $B$,要求你计算它们的乘积矩阵 $AB$。需要注意的是,只有规模匹配的矩阵才可以相乘。即若 $A$ 有 $R_{a}$ 行、$C_{a}$ 列,$B$ 有 $R_{b}$ 行、$C_{b}$ 列,则只有 $C_{a}$ 与 $R_{b}$ 相等时,两个矩阵才能相乘。
输入格式:输入先后给出两个矩阵 $A$ 和 $B$。对于每个矩阵,首先在一行中给出其行数 $R$ 和列数 $C$ ,随后 $R$ 行,每行给出 $C$ 个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的 $R$ 和 $C$ 都是正数,并且所有整数的绝对值不超过100。
输出格式:若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵 $AB$,否则输出 Error: Ca != Rb ,其中 Ca 是A的列数,Rb 是B的行数。
输入样例1:12345672 31 2 34 5 63 47 8 9 0-1 -2 -3 -45 6 7 8
输出样例1:1232 420 22 24 1653 58 63 28
输入样例2:12 ...
GPLT/L1-047
L1-047 装睡(简单模拟)你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。
输入格式:输入在第一行给出一个正整数 $N(≤10)$。随后 $N$ 行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。
输出格式:按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。
输入样例:123454Amy 15 70Tom 14 60Joe 18 50Zoe 21 71
输出样例:12TomZoe
思路:有一项不在正常范围内就输出。
代码:123456789101112131415161718#include <bits/stdc++.h>using namespace std;int N, a, b;string s;int main() { ...
GPLT/L1-046
L1-046 整除光棍(模拟)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数 x ,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字 s,表示 x 乘以 s 是一个光棍,第二个数字 n 是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。
提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除 x 为止。但难点在于,s 可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。
输入格式:输入在一行中给出一个不以5结尾的正奇数 x$(<1000)$。
输出格式:在一行中输出相应的最小的 s 和 n ,其间以1个空格分隔。
输入样例:131
输出样例:13584229390681 15
思路:除法模拟,先找到比除数大的第一个被除数,然后按照除法规 ...
GPLT/L1-045
L1-045 宇宙无敌大招呼(格式化输出)据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。
输入格式:输入在第一行给出一个星球的名字 S,是一个由不超过7个英文字母组成的单词,以回车结束。
输出格式:在一行中输出 Hello S,跟输入的 S 星球打个招呼。
输入样例:1Mars
输出样例:1Hello Mars
思路:先输出”Hello “,然后输出输入的字符串。
代码:123456789101112#include <bits/stdc++.h>using namespace std;string s;int main() { cin >> s; cout << "Hello " << s; return 0;}
GPLT/L1-044
L1-044 稳赢(string)大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
https://images.ptausercontent.com/367
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔 $K$ 次就让一个平局。
输入格式:输入首先在第一行给出正整数 $K(≤10)$,即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi 代表“锤子”、JianDao 代表“剪刀”、Bu 代表“布”。End 代表输入结束,这一行不要作为出招处理。
输出格式:对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:1234567892ChuiZiJianDaoBuJianDaoBuChuiZiChuiZiEnd
输出样例:1234567BuChuiZiBuChuiZiJianDaoChuiZiBu
思路:统计次数,每K次输出等于输入,其他选择稳赢方案。
代码:123456789101112131415161718192021222324252627282930313233#i ...
GPLT/L1-043
L1-043 阅览室(模拟)天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下 S 键,程序开始计时;当读者还书时,管理员输入书号并按下 E 键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有 S没有 E,或者只有 E 没有 S 的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。
输入格式:输入在第一行给出一个正整数 $N(≤10)$,随后给出 $N$ 天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:书号([1, 1000]内的整数) 键值( S 或 E ) 发生时间( hh:mm ,其中 hh 是[0,23]内的整数,mm 是[0, 59]内整数)
每一天的纪录保证按时间递增的顺序给出。
输出格式:对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。
输入样例:123456 ...
GPLT/L1-042
L1-042 日期格式化(格式化输出)世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入格式:输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。
输出格式:在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
输入样例:103-15-2017
输出样例:12017-03-15
思路:月日年存好,然后年月日输出。
代码:123456789101112#include <bits/stdc++.h>using namespace std;int y, m, d;int main(){ scanf("%d-%d-%d",&m, &d, &y); printf("%d-%02d-%02d", y, m, d); return 0;}
GPLT/L1-041
L1-041 寻找250(输出)https://images.ptausercontent.com/365
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
输入格式:输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
输出格式:在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
输入样例:1888 666 123 -233 250 13 250 -222
输出样例:15
思路:永真循环,如果输入250就打印位置,跳出循环。
代码:1234567891011121314151617181920#include <bits/stdc++.h>using namespace std;int N, cnt = 0;int main(){ while(1) { cin >> N; cnt++; if(N == 250) { cout << cnt; break ...