机试练习
机试练习
qmkn
这个作者很懒,什么都没留下…
展开
-
【王道机试】字符串-后缀子串排序-上交大
很简单的题目,用好 substr() 和 sort() 函数即可解决。代码如下:#include<iostream>#include<string>#include<algorithm>using namespace std;int main(){ string str; while(cin>>str){ int n=str.size(); string strs[n]; for(int i=0;i<.原创 2021-08-11 17:54:45 · 79 阅读 · 0 评论 -
【王道机试】字符串-首字母大写-北京大学
OJ:首字母大写不只要判断当前字符的前一位是否为空白符,还要注意第一位不是字母或者是大写字母的情况,要加一句判断 if(str[i]>=‘a’ && str[i]<=‘z’)ASCⅡ码表如下:字母a➡A,需要 str[i]-=32代码如下:#include<iostream>#include<string>using namespace std;int main(){ string str; while(getline(原创 2021-08-10 10:19:10 · 111 阅读 · 0 评论 -
【王道机试】字符串-单词替换-北京大学
OJ:单词替换描述输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。输入描述:每组数据输入包括3行,第1行是包含多个单词的字符串s,第2行是待替换的单词a(长度<=100),第3行是a将被替换的单词b(长度<=100)。s, a, b 最前面和最后面都没有空格。输出描述:每个测试数据输出只有 1 行, 将s中所有单词a替换成b之后的字符串。示原创 2021-08-09 16:34:50 · 110 阅读 · 0 评论 -
【王道机试】字符串-skew数
OJ:skew数描述在 skew binary 表示中,第 k 位的值 x[k] 表示 x[k]×(2^(k+1)-1)。每个位上的可能数字是 0 或 1,最后面一个非零位可以是 2,例如,10120(skew) = 1×(2^5-1) + 0×(2^4-1) + 1×(2^3-1) + 2×(2^2-1) + 0×(2^1-1) = 31 + 0 + 7 + 6 + 0 = 44。前十个 skew 数是 0、1、2、10、11、12、20、100、101、以及 102。输入描述:输入包括多组数原创 2021-08-09 15:06:35 · 98 阅读 · 0 评论 -
【王道机试】字符串-统计字符+字母统计
这两个题目思路类似,就一起放在一个博客里写了统计字符-浙江大学OJ:统计字符描述统计一个给定字符串中指定的字符出现的次数。输入描述:测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到’#'时输入结束,相应的结果不要输出。输出描述:对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出: c0 n0 c1 n1原创 2021-08-09 14:18:48 · 182 阅读 · 0 评论 -
【王道机试】字符串-简单密码-北京大学
OJ:简单密码描述Julius Caesar曾经使用过一种很简单的密码。 对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。 比如字符A用F来代替。如下是密文和明文中字符的对应关系。密文 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z明文 V W X Y Z A B C D E F G H I J K L M N O P Q R S T U你的任务是对给定的密文进行解密得到明文。 你需要注意的是,密文中出现的字母原创 2021-08-09 11:17:19 · 92 阅读 · 0 评论 -
【王道机试】字符串-密码翻译-北京大学
OJ:密码翻译描述在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。输入描述:读取这一行字符串,每个字符串长度小于80个字符输出描述:对于每组数据,输出每行字符串的加密字符串。示例1输入:Hello! How are you!输出:Ifmmp! Ipx原创 2021-08-09 10:59:15 · 263 阅读 · 0 评论 -
【王道机试】字符串-特殊乘法-清华大学
OJ:特殊乘法描述写个算法,对2个小于1000000000的输入,求结果。 特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35输入描述:两个小于1000000000的数输出描述:输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。示例1输入:123 45输出:54很简单的题目,用字符串输入来处理要比数字输入更简单直观。代码如下:#include<iostream>#include<stri原创 2021-08-09 10:42:52 · 51 阅读 · 0 评论 -
【王道机试】查找-找位置-华中科技大学
OJ:找位置描述对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12 输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。输入描述:输入包括一个由字母和数字组成的字符串,其长度不超过100。输出描述:可能有多组测试数据,对于每组数据, 按照样例输出的格式将字符出现的位置标出。 1、下标从0开始。 2、相同的字母在一行表示出其出现过的位置。示例1输入:abcaaAB12ab12输出:a:0,a:3,a:4,a:9b原创 2021-08-08 10:00:40 · 73 阅读 · 0 评论 -
【王道机试】查找-打印极值点下标-北京大学
OJ:打印极值点下标描述在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数, 或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。输入描述:第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。输出描述:每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。示例1输入:1010 12 12 11 11 12 23 24 12 121512 12 122 112 222 211 2原创 2021-08-07 18:09:53 · 91 阅读 · 0 评论 -
【王道机试】二分查找-查找-北邮
OJ:查找描述输入数组长度 n 输入数组 a[1…n] 输入查找个数m 输入查找数字b[1…m] 输出 YES or NO 查找有则YES 否则NO 。输入描述:输入有多组数据。 每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。输出描述:如果在n个数组中输出YES否则输出NO。示例1输入:51 5 2 4 332 5 6输出:YESYESNO本题采用二分查找的方式对目标元素进行查找,二分查找部分函数如下:原创 2021-08-07 16:48:30 · 180 阅读 · 0 评论 -
【王道机试】查找-找x-哈工大
OJ:找x描述输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入描述:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出描述:对于每组输入,请输出结果。示例1输入:21 30输出:-1代码如下:#include<iostream>using namespace std;int main(){ int n; while(cin>原创 2021-08-07 10:37:25 · 51 阅读 · 0 评论 -
【王道机试】排序-小白鼠排队-北京大学
OJ:小白鼠排队描述N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。输入描述:多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过1原创 2021-08-07 10:03:01 · 605 阅读 · 0 评论 -
【王道机试】排序-整数奇偶排序-北京大学
OJ:整数奇偶排序描述输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。输入描述:任意排序的10个整数(0~100),彼此以空格分隔。输出描述:可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔。 1. 测试数据可能有很多组,请使用while(cin>>a[0]>>a[1]>>…>>a[9])类似的做法来实现; 2. 输入数据随原创 2021-08-06 16:07:01 · 64 阅读 · 0 评论 -
【王道机试】排序-特殊排序-华中科技大学
OJ:特殊排序描述输入一系列整数,将其中最大的数挑出(如果有多个,则挑出一个即可),并将剩下的数进行排序,如果无剩余的数,则输出**-1**。输入描述:输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。 接下来的一行有N个整数。输出描述:可能有多组测试数据,对于每组数据, 第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。 第二行将排序的结果输出。示例1输入:41 3 4 2输出:41 2 3注意:剩余的数是升原创 2021-08-06 15:38:32 · 183 阅读 · 0 评论 -
【王道机试】排序-成绩排序-清华大学
OJ:成绩排序描述输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩按先录入排列在前的规则处理。示例:jack 70peter 96Tom 70smith 67从高到低 成绩peter 96jack 70Tom 70smith 67从低到高 成绩smith 67jack 70Tom 70peter 96输入描述:注意一个case里面有原创 2021-08-06 14:53:25 · 67 阅读 · 0 评论 -
【王道机试】排序-成绩排序-清华大学
描述用一维数组存储学号和成绩,然后,按成绩排序输出。输入描述:输入第一行包括一个整数N(1<=N<=100),代表学生的个数。 接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。输出描述:按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。 如果学生的成绩相同,则按照学号的大小进行从小到大排序。示例1输入:31 902 873 92输出:2 871 903 92代码如下:#include<iostream>#inclu原创 2021-08-06 14:01:59 · 211 阅读 · 0 评论 -
【王道机试】模拟-xxx定律-浙大
OJ:xxx定律描述对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。 请计算需要经过几步才能将n变到1,具体可见样例。输入描述:测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1<=n<=10000)输出描述:对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。示例1输入:310输出:50代码如下:#include<iostream>using原创 2021-08-06 11:20:41 · 92 阅读 · 0 评论 -
【王道机试】模拟-剩下的树-清华大学
OJ平台:剩下的树描述有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。 现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。 可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。输入描述:两个整数L(1<=L&原创 2021-08-06 10:16:21 · 66 阅读 · 0 评论 -
【王道机试】模拟-日期差值-上交大
描述有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入描述:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述:每组数据输出一行,即日期差值示例1输入:2011041220110422输出:11采用格式化读入会更简洁。代码如下:#include<iostream>using namespace std;int ping[]={0,31,59,90,120,151,181,212,243,273,304,原创 2021-08-05 20:31:13 · 108 阅读 · 0 评论 -
【王道机试】模拟-日期累加-北理工
描述设计一个程序能计算一个日期加上若干天后是什么日期。输入描述:输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。输出描述:输出m行,每行按yyyy-mm-dd的个数输出。示例1输入:12008 2 3 100输出:2008-05-13要注意加上若干天后是否已经超过该年的总天数。#include<iostream>using namespace std;int ping[]={0,31,59,90,120,151,181,212,243,27原创 2021-08-05 19:30:34 · 56 阅读 · 0 评论 -
【王道机试】模拟-打印日期-华中科技大学
描述给出年分m和一年中的第n天,算出第n天是几月几号。输入描述:输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。输出描述:可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。示例1输入:2000 32000 312000 402000 602000 612001 60输出:2000-01-032000-01-312000-02-092000-02-292000-03-012001原创 2021-08-05 18:54:58 · 87 阅读 · 0 评论 -
【王道机试】模拟-今年的第几天?-清华大学
描述输入年、月、日,计算该天是本年的第几天。输入描述:包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。输出描述:输入可能有多组测试数据,对于每一组测试数据, 输出一个整数,代表Input中的年、月、日对应本年的第几天。示例1输入:1990 9 202000 5 1输出:263122闰年的定义为:普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。世纪闰原创 2021-08-04 20:53:40 · 71 阅读 · 0 评论 -
【王道机试】枚举-old bill-上交大
题目大意:N只火鸡的价格为$ _ XYZ _,火鸡的总数N在1~99之间。价格由五位数组成,两边的数字由于褪色而看不清,所以只能看到中间的三位数。假设第一位数字非零,每只火鸡的价格是整数,并且所有火鸡的价格相同。给定N, X, Y, Z,编写一个程序来猜测两边褪色的数字和单只火鸡的价格。如果有多个价格符合题意,那么输出最昂贵的那个。输入描述:The first line of the input file contains an integer N (0<N<100), which rep原创 2021-08-04 20:23:56 · 182 阅读 · 0 评论 -
【王道机试】枚举-百鸡问题-哈工大
描述用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。输入描述:测试数据有多组,输入n。输出描述:对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。示例1输入:40输出:x=0,y=0,z=100x=0,y=1,z=99x=0,y=2,z=98x=1,y=0,z=99代码如下:#include<iostream>using namespace std原创 2021-08-04 19:47:44 · 162 阅读 · 0 评论 -
【王道机试】枚举-与7无关的数-北京大学
描述一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7, 则称其为与7相关的数.现求所有小于等于n(n<100)的与7无关的正整数的平方和。输入描述:案例可能有多组。对于每个测试案例输入为一行,正整数n,(n<100)输出描述:对于每个测试案例输出一行,输出小于等于n的与7无关的正整数的平方和。示例1输入:21输出:2336要注意审题啊,是与7无关的数,一开始算成是与7有关的数的平方和了。代码如下:#include<iostream>us原创 2021-08-04 16:02:25 · 235 阅读 · 0 评论 -
【王道机试】枚举-对称平方数1-清华大学
描述打印所有不超过256,其平方具有对称性质的数。如2,11就是这样的数,因为22=4,1111=121。输入描述:无任何输入数据输出描述:输出具有题目要求的性质的数。如果输出数据不止一组,各组数据之间以回车隔开。直接枚举判断就可以了,注意要从0开始判断,0也符合题目要求。代码如下:#include<iostream>using namespace std;int reverse(int num){ int result=0; while(num!=0){原创 2021-08-04 15:27:13 · 200 阅读 · 0 评论 -
【王道机试】枚举-反序数-清华大学
描述设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)求N的值输入描述:程序无任何输入数据。输出描述:输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。思路就是遍历1000~9999,判断reverse( i ) == i * 9,相等即为所求。由于10000/9=1111.11,所以只需要遍历1000~1111就足够了。代码如下:#include<iostream>using namespace std;int reverse(i原创 2021-08-04 15:09:47 · 144 阅读 · 0 评论 -
2021算法设计与编程挑战赛 (春季赛)-F题
题目如下:F-这是一道大水题代码如下:#include<iostream>using namespace std;int main(){ long long m,n,sum=0; int flag; cin>>n>>m; long long movie[n+1]={0}; while(m--){ cin>>flag; if(flag==0){ long long l,r,z; cin>>l>>r&原创 2021-06-06 14:44:49 · 192 阅读 · 0 评论 -
【动态规划:递推枚举】N阶楼梯上楼问题
题目描述:N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)输入描述:输入包括一个整数N (1<=N<90)。输出描述:可能有多组测试数据,对于每组数据,输出当楼梯阶数是N时的上楼方式个数。示例1输入4输出5dp[ i ] = dp[ i - 1 ] + dp[ i - 2 ]代码如下:#include<iostream>#include<cstring>#define mem(a) memset(a,0,size原创 2021-04-17 21:37:57 · 284 阅读 · 0 评论 -
第二十次 CSP认证 202009-2 风险人群筛查
代码如下:#include<iostream>#include<algorithm>using namespace std;struct person{ long long x[1024],y[1024]; int count[1024]={0};};bool cmp(int a,int b){ return a>b;}int main(){ int n,k,t; long long xl,yd,xr,yu; cin>>n>&...原创 2021-04-17 14:52:26 · 94 阅读 · 0 评论 -
第二十次 CSP认证 202009-1 检测点查询
代码如下:#include<iostream>#include<algorithm>using namespace std;struct point{ int x; int y; int i; int dist;};int dist(int x1,int y1,int x2,int y2){ return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);}bool cmp(point a,point b){ if(a.dist!=b....原创 2021-04-17 14:48:49 · 93 阅读 · 0 评论 -
【蓝桥杯2016初赛】网友年龄
题目描述:某君新认识一网友。当问及年龄时,他的网友说:“我的年龄是个2位数,我比儿子大27岁,如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄”请你计算:网友的年龄一共有多少种可能情况?输出:请填写表示可能情况的种数。#include<iostream>using namespace std;int main(){ int count=0; for(int i=27;i<100;i++){ int n1=i%10; int n2=i/10; int原创 2021-04-15 10:25:53 · 184 阅读 · 0 评论 -
【蓝桥杯2016初赛】生日蜡烛
题目描述:某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。请问,他从多少岁开始过生日party的?输出:请填写他开始过生日party的年龄数。【解析】用等差数列可以求出来开始吹蜡烛时的年龄 i 与最后一次吹蜡烛的年龄 j 之间的关系:( i * j ) * ( j - i + 1 ) / 2 = 236直接写程序枚举来求出 i 就可以了#include<iostream>using namespace原创 2021-04-14 23:06:37 · 413 阅读 · 0 评论 -
有1,2,3,4四个数,能组成多少个不同且无重复数字的三位数
题目描述:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?代码如下:#include<iostream>using namespace std;int main(){ int a,b,c; int count=0; for(a=1;a<5;a++){ for(b=1;b<5;b++){ for(c=1;c<5;c++){ if(a!=b&&b!=c&&a!=c){ coun原创 2021-04-05 11:14:37 · 829 阅读 · 0 评论 -
【王道机试】枚举-abc-清华大学
题目描述:设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。**输入描述:**题目没有任何输入。输出描述:请输出所有满足题目条件的a、b、c的值。a、b、c之间用空格隔开。每个输出占一行。暴力枚举,代码如下:#include<iostream>using namespace std;int main(){ int a,b,c; for(a=0;a<6;a++){ f原创 2021-04-05 10:53:30 · 97 阅读 · 0 评论 -
数组的最大最小值问题
数组的最大最小值问题很简单,最通俗易懂的方式就是将数组从头到尾遍历一遍,比较然后得出最小值与最大值。 这里我们不采用这种方式,我们采用分治策略,用递归的方式来解决问题。 设计思路是如果传入的数组的元素大于2,则将数组分为两个子数组,对子数组进行递归调用,直至数组元素个数为1个或2个,然后对此数组内元素直接进行比较得出最大值与最小值,合并子数组并比较两个子数组的最大值与最小值,直至...原创 2020-04-09 15:09:23 · 514 阅读 · 0 评论 -
输入输出格式
HDU 1089-1096第一种(1089):【要求】有多组输入但不知道具体数目【代码】#include<iostream>using namespace std;int main(){ int a,b; while(cin>>a>>b){ cout<<a+b<<endl; } return 0;} 第二种(...原创 2020-04-17 09:59:01 · 365 阅读 · 0 评论 -
HDU 2081 手机短号
【题目描述】大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。现在,如果给你一个11位长的手机号码,你能找出对应的短号吗?【输入】输入数据的第一行是一个N(N <= 200),表示有N个数据,接下来的N行每一行为一...原创 2020-04-18 15:16:18 · 266 阅读 · 0 评论