B1067 试密码 (20 分)(简单)
当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。
输入格式:输入在第一行给出一个密码(长度不超过 20 的、不包含空格、Tab、回车的非空字符串)和一个正整数 N(≤ 10),分别是正确的密码和系统允许尝试的次数。随后每行给出一个以回车结束的非空字符串,是用户尝试输入的密码。输入保证至少有一次尝试。当读到一行只有单个 # 字符时,输入结束,并且这一行不是用户的输入。
输出格式:对用户的每个输入,如果是正确的密码且尝试次数不超过 N,则在一行中输出 Welcome in,并结束程序;如果是错误的,则在一行中按格式输出 Wrong password: 用户输入的错误密码;当错误尝试达到 N 次时,再输出一行 Account locked,并结束程序。
输入样例 1:Correct%pw 3correct%pwCorrect@PWwhatisthepassword!Correct%pw#
输出样例 1:Wrong password: correct%pwWrong password: Correct@PWWrong ...
B1066 图像过滤 (15 分)(简单)
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。
输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数 M 和 N(0< M,N≤500),另外是待过滤的灰度值区间端点 A 和 B(0≤A< B ≤ 255)、以及指定的替换灰度值。随后 M 行,每行给出 N 个像素点的灰度值,其间以空格分隔。所有灰度值都在 [0, 255] 区间内。
输出格式:输出按要求过滤后的图像。即输出 M 行,每行 N 个像素灰度值,每个灰度值占 3 位(例如黑色要显示为 000),其间以一个空格分隔。行首尾不得有多余空格。
输入样例:3 5 100 150 03 189 254 101 119150 233 151 99 10088 123 149 0 255
输出样例:003 189 254 000 000000 233 151 099 000088 000 000 000 255
注意点:循环体输入时不能用cin,否则会运行超时
代码:1234567891011121314151 ...
B1066 图像过滤 (15 分)(简单)
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。
输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数 M 和 N(0< M,N≤500),另外是待过滤的灰度值区间端点 A 和 B(0≤A< B ≤ 255)、以及指定的替换灰度值。随后 M 行,每行给出 N 个像素点的灰度值,其间以空格分隔。所有灰度值都在 [0, 255] 区间内。
输出格式:输出按要求过滤后的图像。即输出 M 行,每行 N 个像素灰度值,每个灰度值占 3 位(例如黑色要显示为 000),其间以一个空格分隔。行首尾不得有多余空格。
输入样例:3 5 100 150 03 189 254 101 119150 233 151 99 10088 123 149 0 255
输出样例:003 189 254 000 000000 233 151 099 000088 000 000 000 255
注意点:循环体输入时不能用cin,否则会运行超时
代码:1234567891011121314151 ...
B1059 C语言竞赛 (20 分)(一般)
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:
0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
1. 排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
2. 其他人将得到巧克力。
给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。
输入格式:输入第一行给出一个正整数 N(≤104),是参赛者人数。随后 N 行给出最终排名,每行按排名顺序给出一位参赛者的 ID(4 位数字组成)。接下来给出一个正整数 K 以及 K 个需要查询的 ID。
输出格式:对每个要查询的 ID,在一行中输出 ID: 奖品,其中奖品或者是 Mystery Award(神秘大奖)、或者是 Minion(小黄人)、或者是 Chocolate(巧克力)。如果所查 ID 根本不在排名里,打印 Are you kidding?(耍我呢?)。如果该 ID 已经查过了(即奖品已经领过了),打印 ID: Checked(不能多吃多占)。
输入样例:611116666888812345555000168888000111 ...
B1057 数零壹 (20 分)(简单)
给定一串长度不超过 105的字符串,本题要求你将其中所有英文字母的序号(字母 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
注意点:注意不是将二进制输出,而是将二进制中1和0的个数输出。
代码:123456789101112131415161718192021222324252627282930313233#include <cstdio>#include <iostream>#include <algorithm>#include <string> #include <cctype> usi ...
B1056 组合数的和 (15 分)(简单)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
输入格式:输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出格式:输出所有可能组合出来的2位数字的和。
输入样例:3 2 8 5
输出样例:330
思路:法1常规思路,不做解释法2考虑到每一个数字都可以做个位和十位,对于N个数字,每个数字都可以做n-1次个位和n-1次十位,所以仅需要一次遍历
代码1:1234567891011121314151617181920//复杂度为O(n²)#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int main(){ int n,a[10],sum=0; cin>>n; for(int i=0;i ...
B1053 住房空置率 (20 分)(简单)
在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:
在观察期内,若存在超过一半的日子用电量低于某给定的阈值 e,则该住房为“可能空置”;
若观察期超过某给定阈值 D 天,且满足上一个条件,则该住房为“空置”。
现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。
输入格式:输入第一行给出正整数 N(≤1000),为居民区住房总套数;正实数 e,即低电量阈值;正整数 D,即观察期阈值。随后 N 行,每行按以下格式给出一套住房的用电量数据:
K E1 E2 … EK
其中 K 为观察的天数,Ei为第 i 天的用电量。
输出格式:在一行中输出“可能空置”的比率和“空置”比率的百分比值,其间以一个空格分隔,保留小数点后 1 位。
输入样例:5 0.5 106 0.3 0.4 0.5 0.2 0.8 0.610 0.0 0.1 0.2 0.3 0.0 0.8 0.6 0.7 0.0 0.55 0.4 0.3 0.5 0.1 0.711 0.1 0.1 0.1 0.1 ...
B1049 数列的片段和 (20 分)(简单)
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。
给定正整数数列,求出全部片段包含的所有的数之和。如本例中 10 个片段总和是 0.1 + 0.3 + 0.6 + 1.0 + 0.2 + 0.5 + 0.9 + 0.3 + 0.7 + 0.4 = 5.0。
输入格式:输入第一行给出一个不超过 105的正整数 N,表示数列中数的个数,第二行给出 N 个不超过 1.0 的正数,是数列中的数,其间以空格分隔。
输出格式:在一行中输出该序列所有片段包含的数之和,精确到小数点后 2 位。
输入样例:40.1 0.2 0.3 0.4
输出样例:5.00
代码:12345678910111213141516#include <cstdio>#include < ...
B1047 编程团体赛 (20 分)
编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。
现给定所有队员的比赛成绩,请你编写程序找出冠军队。
输入格式:输入第一行给出一个正整数 N(≤104),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的正整数,队员编号为 1 到 10 的正整数,成绩为 0 到 100 的整数。
输出格式:在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。
输入样例:63-10 9911-5 87102-1 0102-3 10011-9 893-2 61
输出样例:11 176
代码:123456789101112131415161718192021#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int main(){ int n,q,m,score; cin>&g ...
B1046 划拳 (15 分)
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。
下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。
输入格式:输入第一行先给出一个正整数 N(≤100),随后 N 行,每行给出一轮划拳的记录,格式为:
甲喊 甲划 乙喊 乙划其中喊是喊出的数字,划是划出的数字,均为不超过 100 的正整数(两只手一起划)。
输出格式:在一行中先后输出甲、乙两人喝酒的杯数,其间以一个空格分隔。
输入样例:58 10 9 125 10 5 103 8 5 1212 18 1 134 16 12 15
输出样例:1 2
代码:1234567891011121314151617181920#include <iostream>#include <cstdio>#include <algorithm> using namespace std;int main(){ ...