PAT乙级(BasicLevel)真题训练GlüklichJunge

写在前面:PAT冬季赛马上就要开始了!这一次先报一个乙级冲鸭!我感Jio乙级里面还是有蛮多水题的,也有些题虽然看上去是水题,但是真正用代码实现起来的话会卡你那么一下。

输入两个非负10进制整数A和B(<=230-1),输出A+B的D(1

输入在一行中依次给出3个整数A,B和D。

输出A+B的D进制数。

1234568输出样例:1103解题思路:首先,这道题看上去很简单,但是用代码实现起来发现有点难受啊。幸亏数据结构没白学,我用了一个堆栈。先令C=A+B如果C等于0,就直接输出0,否则对C进行进制转换。这道题主要考察的应该就是将十进制的C转换成D进制。先把C对D的余数推入栈中,然后C除以D的值赋给C,最后根据堆栈“后进先出”的规则输出C对D的余数,也就得到了D进制下的C。

1#include2usingnamespacestd;34intmain()5{6inta,b,d;7cin>>a>>b>>d;8stacks;9intc=a+b;10if(c==0)11{12cout<<0;13}14while(c!=0)15{16s.push(c%d);17c/=d;18}19while(!s.empty())20{21cout<

输入第1行给出正整数T(<=10),是测试用例的个数。随后给出组测试用例,每组占一行,顺序给出A,B和C.整数间以空格分隔。

对每组测试用例,在一行中输出“Case#X:true”如果A+B>C,否则输出“Case#X:false”,其中X是测试用例的编号(从1开始)。

41232342147483647021474836460-2147483648-2147483647输出样例:Case#1:falseCase#2:trueCase#3:trueCase#4:false解题思路:首先看到这道题给定的区间是[-2的31次方,2的31次方],直接无脑用Python的。这段代码中最秀的地方就是这个a,b,c=map(int,input().split())啦!map()函数的用法如下:map(func,[seq1,seq2,...])第一个参数接受一个函数名,后面的参数接受一个或多个可Python的函数编程中的map()函数是将FUNC作用于SEQ中的每一个元素,并将所有的调用的结果作为一个列表返回。

1t=eval(input())2foriinrange(1,t+1):3a,b,c=map(int,input().split())4ifa+b>c:5print("Case#{}:true".format(i))6else:7print("Case#{}:false".format(i))3.查验身份证(15分)题目描述:一个合法的身份证号码由17位地区,日期编号和顺序编号加1位校验码组成校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z者除外;最后按照以下关系对应值与校验码M的值:Z:012345678910M:10X98765432现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入第一行给出正整数N(<=100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出“Allpassed”。

432012419880824005612010X19890101123411010819671130186637070419881216001X输出样例:12010X19890101123411010819671130186637070419881216001X解题思路:首先,这个题目看起我有点懵逼,真的题目都看了3,4遍。好好缕了下思路之后,先建立俩个数组分别用来存放权值分配和校验码M.然后取消cin与stdin的同步压压惊,真的怕TLE,毕竟要对若干个18位数的身份证每一位进行校验。立个flag=true,如果到最后,标志还是为true,表明所有的身份证号码都正常,输出“Allpassed”。然后isTrue用来判断每一个身份证号的前17位是否全为数字,若不是数字则isTrue和flag都变成false,用sum来计算身份证号号的每一位数和它所占的权值的乘积之和,将计算出来的总和对11取模得到值Z,根据题意可知,可以根据z值来找到对应的校验码中号的值,若IsTrue运算为真但校验码中号和身份证最后一位不相等,这个身份证号也是错误的,需要对错误的身份证号进行输出。

1#include2usingnamespacestd;34intweight[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};5charM[11]={'1','0','X','9','8','7','6','5','4','3','2'};67intmain()8{9ios::sync_with_stdio(false);10intn;11cin>>n;12stringID;13boolflag=true;14for(inti=0;i>ID;19for(intj=0;j<17;j++)20{21if(ID[j]<'0'||ID[j]>'9')22{23cout<

A1=能被5整除的数字中所有偶数的和;A2=将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;A3=被5除后余2的数字的个数;A4=被5除后余3的数字的平均数,精确到小数点后1位;A5=被5除后余4的数字中最大数字。

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。

对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出'N'。

1312345678910201618输出样例:301129.79解题思路:首先,根据题意可知这是一道水题,真的水得不能再水了,直接按着题目来就求A1,A2,A3,A4,A5就行啦,整除5的时候可以用switch,但是我用的的if-else。

输入在一行中给出M和N,其间以空格分隔。

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

1#include2usingnamespacestd;34boolisPrime(intn)5{6if(n<=1)7{8returnfalse;9}10for(inti=2;i<=sqrt(n);i++)11{12if(n%i==0)13{14returnfalse;15}16}17returntrue;18}1920intmain()21{22intm,n;23cin>>m>>n;24inta[10001];25for(inti=1,j=1;j<=10000;i++)26{27if(isPrime(i))28{29a[j++]=i;30}31}32boolflag=true;33intcount=0;34for(inti=m;i<=n;i++)35{36if(flag)37{38cout<

输入第1行给出正整数N(<=105),即双方交锋的次数。随后行,每行给出一次交锋的信息,即甲,乙双方同时给出的的手势.C代表“锤子“,J代表‘剪刀’,B代表‘布’,第1个字母代表甲方,第2个代表乙方,中间有1个空格。

输出第1,2行分别给出甲,乙的胜,平,负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲,乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。

10CJJBCBBBBCCCCBJBBCJJ输出样例:532235BB解题思路:首先通过题意可知这是一道代码量很大的水题。它不仅需要记录甲乙胜负平的次数,而且需要记录甲乙获胜的手势,然后通过比较来找出获胜最多的手势,在不唯一的情况下输出字母序最小的解。

每个输入包含1个测试用例,即一个不超过1000位的正整数N。

对N中每一种不同的个位数字,以d:M的格式在一行中输出该位数字d及其在N中出现的次数M.要求按d的升序输出。

100311输出样例:0:21:33:1解题思路:首先,根据题意可知这是一道水题,那么问题来了,怎么在写水题的同时秀一波操作呢?额,我用一个map来存放出现过的数字并记录下出现的次数,然后用for-each循环来对map进行遍历并输出出现过的数字和出现的次数。

1#include2usingnamespacestd;34intmain()5{6stringn;7mapm;8cin>>n;9for(autoi:n)10{11m[i]++;12}13for(autoi:m)14{15cout<

每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0,数字1,......数字9的个数。整数间用一个空格分隔0.10个数字的总个数不超过50,且至少拥有1个非0的数字。

在一行中输出能够组成的最小的数。

2200030010输出样例:10015558解题思路:首先,根据题意可知这是一道水题,第一位数输出非0的最小值,然后后面的位数直接依次把身下的数字中的最小值输出,输出的结果就是最小数。

输入在一行中顺序给出2个整数C1和C1。注意两次获得的时钟打点数肯定不相同,即C1

1#include2usingnamespacestd;34intmain()5{6intc1,c2;7cin>>c1>>c2;8intt=round((c2-c1)/100.0);9printf("%02d:%02d:%02d\n",t/3600,t%3600/60,t%60);10return0;11}10.人口普查(20分)题目描述:某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的-假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入在第一行给出正整数N,取值在(0,105);随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串),以及按“yyyy/MM/DD”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

在一行中顺序输出有效生日的个数,最年长人和最年轻人的姓名,其间以空格分隔。

5John2001/05/12Tom1814/09/06Ann2121/01/30James1814/09/05Steve1967/11/20输出样例:3TomJohn解题思路:首先,根据题意可知这个人口普查其实就是2个变量而已嘛,一个name,一个birthday,那就直接建立一个person结构体好了。然后根据题目要求这个岛上的人生日在1814/09/06至2014/09/06这个范围内,接下来直接用for循环对输入进行遍历来求解在这个范围内的有效生日并找出最年长和最年轻的人所在的下标就好了。然而!我第一次提交的时候有个测试用例WA了,找了N久之后终于发现当有效个数为0时,后面不能够输出多余的空格。

1#include2usingnamespacestd;34structperson5{6stringname,birthday;7};89intmain()10{11intn;12cin>>n;13stringstart="1814/09/06";14stringend="2014/09/06";15personp[n];16intcount=0;17boolflag=true;18intminIndex,maxIndex;19for(inti=0;i>p[i].name>>p[i].birthday;22if(p[i].birthday>=start&&p[i].birthday<=end)23{24count++;25if(flag)26{27flag=false;28minIndex=i,maxIndex=i;29}30else31{32if(p[minIndex].birthday>p[i].birthday)33{34minIndex=i;35}36if(p[maxIndex].birthday

输入在2行中分别给出应该输入的文字,以及实际被输入的文字。每段文字是不超过80个字符的串,由字母AZ(包括大,小写),数字0-9,以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。

7_This_is_a_test_hs_s_a_es输出样例:7TI解题思路:首先,根据题意脑子里冒出一句话“Lifeisshort,usepython!”用for循环来遍历应该输入的蚊子,如果一个字符是应该输入的但实际上未被输入,就用upper()把这个字符转换成大写形式存入bad_key这个列表中,接下来就是对bad_key这个列表去重输出。先利用set()来对bad_key()进行去重,然后再用list()将bad_key()转换回列表,在完成这个去重操作的同时,用sorted()函数来保留bad_key原有的顺序,最后用join把bad_key中所有的元素添加到一个空字符串中进行输出。

1s,a=input(),input()2bad_key=[i.upper()foriinsifinotina]3print("".join(sorted(list(set(bad_key)),key=bad_key.index)))12.旧键盘打字(20分)题目描述:旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过10^5个字符的串。可用的字符包括字母[a-z,A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

7+IE.7_This_is_a_test.输出样例:_hs_s_a_tst解题思路:首先,看完题目之后发现它和上一题很相似,还是那句话“Lifeisshort,usepython!”虽然思路也很简单,但是!这次的代码有点长啊,我是先把bad_key里面所有的大写字母都转换成小写字母,转换的同时在打印结果result中删去坏键。如果bad_key里面有'+'号,则说明上档键是坏的,无法输出大写字母,所以当strinput中的字符是大写且上档键是坏的时,就将这个大写的坏键在打印结果result中删去,最后输出能打印出来的字符。

1badKey,strinput=input(),input()2result=strinput3foriinbadKey:4ifbadKey.isupper():#如果坏键是大写字母,则替换成小写字母5result=result.replace(i.lower(),"")6result=result.replace(i,"")#坏键字符全部从打印结果中删去7ifbadKey.find('+')>-1:#如果含有上档键8foriinset(list(result)):#把预期打印结果转换成set去重,再进行大写字母的查找9ifi.isupper():#若找到大写字母,就把它从打印结果中删去10result=result.replace(i,"")11print(result)13.跟奥巴马一起编程(15分)题目描述:美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!

输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空格。

输出由给定字符画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。

10a输出样例:aaaaaaaaaaaaaaaaaaaaaaaaaa解题思路:首先,根据题意可知行数是列数的50%(四舍五入取整),输入的边长也就是col列数,然后利用round()函数来四舍五入求row行数,接着利用for循环嵌套,在第一行、最后一行输出字符c,在中间行的第一列和最后一列输出字符c,其余位置输出空格。

1#include2usingnamespacestd;34intmain()5{6intcol;7charc;8cin>>col>>c;9introw=round(col/2.0);//通过round来实现四舍五入10for(inti=0;i

注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得72+45/2=94.5(亿元)。

每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500(以万吨为单位)的正整数D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。

对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2位。

320181510757245输出样例:94.50解题思路:首先,通过题意可知月饼有3个变量:库存量,总售价,单价。所以,先建一个含有这3个变量的moonCake结构体,然后依次输入月饼的种类数、需求量,每种月饼的库存量和总售价。在算出月饼的单价之后,根据单价从高到低用sort来对月饼进行排序。最后通过需求量和月饼的库存量大小的比较来求利润。

1#include2usingnamespacestd;34structmoonCake5{6doubleamount;//月饼的库存量7doubletotalPrice;//月饼的总售价8doubleunitPrice;//月饼的单价9};1011boolcmp(moonCake&m1,moonCake&m2)//按月饼的单价对月饼进行排序12{13returnm1.unitPrice>m2.unitPrice;14}1516intmain()17{18intN,D;//N为月饼的种类数,D为市场最大需求量19cin>>N>>D;20moonCakem[N];21for(inti=0;i>m[i].amount;24}25for(inti=0;i>m[i].totalPrice;28m[i].unitPrice=double(m[i].totalPrice)/m[i].amount;29}30sort(m,m+N,cmp);31doubleprofit=0;//总利润32inti=0;33while(D>0)34{35if(D>=m[i].amount)36{37D-=m[i].amount;38profit+=m[i].totalPrice;39}40else41{42profit+=m[i].unitPrice*D;43break;44}45i++;46}47printf("%.2f\n",profit);48return0;49}15.有几个PAT(25分)题目描述:字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?

输入只有一行,包含一个字符串,长度不超过105,只包含P,A,T三种字母。

在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。

APPAPT输出样例:2解题思路:首先,这个题看完之后有点懵逼,然后仔细分析得出这三点:①每个甲对应的PA组合数量是甲之前P的数量;②每个对应的PAT组合数量是之前所有甲对应的PA组合数量的累加;③所有的PAT组合数量是所有对应的PAT组合数量的累加。

1#include2usingnamespacestd;34intmain()5{6strings;7cin>>s;8intlen=s.length();9intresult=0,countp=0,countpa=0,countpat=0;10for(autoi:s)11{12if(i=='P')13{14countp++;15}16elseif(i=='A')17{18countpa+=countp;19}20elseif(i=='T')21{22countpat+=countpa;23countpat%=1000000007;24}25}26cout<

输入在第1行给出不超过105的正整数N,即学生总人数。随后一行给出N名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。

在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。

10607590557599829075503759088输出样例:320解题思路:首先看完题目之后,第一反应就是这是水题,只需要建立一个map来存放学生的分数并且统计每个分数有多少人就行了,map建立出来了之后按题目要求输出,就可以看下一道题了。

1#include2usingnamespacestd;34intmain()5{6ios::sync_with_stdio(false);7//取消cin和stdin的同步,第一次提交的时候有个测试用例TLE了8mapm;9intn,temp;10cin>>n;11for(inti=0;i>temp;14m[temp]++;15}16intk;17cin>>k;18for(inti=0;i>temp;21cout<0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

每个测试输入包含1个测试用例,格式为

第1行:正整数n第2行:第1个学生的姓名学号成绩第3行:第2个学生的姓名学号成绩.........第n+1行:第n个学生的姓名学号成绩其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。

3JoeMath99011289MikeCS991301100MaryEE99083095输出样例:MikeCS991301JoeMath990112解题思路:首先看完题目之后,建立一个vector来对学生的信息进行存储,利用sort函数根据学生分数降序来对学生进行排序,输出成绩最高和最低的学生信息即可。

1#include2usingnamespacestd;34structstu5{6stringname;7stringID;8intscore;9};1011boolCmp(structstu&a,structstu&b)12{13returna.score>b.score;14}1516intmain()17{18intn;19while(cin>>n)20{21vectorv(n);22for(inti=0;i>v[i].name>>v[i].ID>>v[i].score;25}26sort(v.begin(),v.end(),Cmp);27cout<

输入第一行给出一个正整数N(≤1000),随后N行,每行给出一个考生的信息:准考证号试机座位号考试座位号。其中准考证号由14位数字组成,座位从1到N编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。

考生信息之后,给出一个正整数M(≤N),随后一行中给出M个待查询的试机座位号码,以空格分隔。

对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用1个空格分隔。

41012015091223324101201509121194110120150912126131012015091200232234输出样例:101201509120022101201509121191解题思路:首先看完题目之后,建立一个vector来对学生的信息进行存储,利用sort函数根据学生试机座位号升序来对学生进行排序,对vector进行遍历找到要查找的试机座位号,输出学生的准考证号和考试座位号即可。

1#include2usingnamespacestd;34structstu5{6stringID;7intseat1,seat2;//分别为试机座位号和考试座位号8};910boolCmp(stus1,stu&s2)11{12returns1.seat1>n;19vectorv(n);20for(inti=0;i>v[i].ID>>v[i].seat1>>v[i].seat2;23}24sort(v.begin(),v.end(),Cmp);25intm;26cin>>m;27for(inti=0;i>temp;31for(intj=0;j

输入在第一行中给出一个正整数N(≤10000)。随后N行,每行按下列格式给出:

IDxy其中ID是运动员的编号(由4位数字组成);x和y是其打出的弹洞的平面坐标(x,y),均为整数,且0≤|x|,|y|≤100。题目保证每个运动员的编号不重复,且每人只打1枪。

输出冠军和菜鸟的编号,中间空1格。题目保证他们是唯一的。

30001571020-1302330-1输出样例:02330001解题思路:首先,看完题目就可以知道,这跟前面的俩道题几乎是用了同一个答题模板。建立一个vector来对运动员的信息进行存储,利用sort函数根据弹孔离靶心距离来对运动员进行排序,最后输出冠军和菜鸟即可。AC代码:1#include2usingnamespacestd;34structAthlete5{6stringID;7intx,y;8doubledistance;9};1011boolCmp(Athletea1,Athletea2)12{13returna1.distance>a2.distance;14}1516intmain()17{18intn;19cin>>n;20vectorv(n);21for(inti=0;i>v[i].ID>>v[i].x>>v[i].y;24v[i].distance=sqrt(v[i].x*v[i].x+v[i].y*v[i].y);25}26sort(v.begin(),v.end(),Cmp);27cout<

每个测试输入包含1个测试用例,给出正整数n(<1000)。

每个测试用例的输出占一行,用规定的格式输出n。

234输出样例1:BBSSS1234输入样例2:23输出样例2:SS123解题思路:首先,通过这个题目的输入输出样例可知,输入的数字n的百位数是多少就输出多少个'B',十位数是多少就输出多少个'S',个位数是多少就从1开始一直输出到这个数为止。AC代码:1#include(2usingnamespacestd;34intmain()5{6intn;7cin>>n;8intb=n/100;9ints=n%100/10;10intg=n%10;11for(inti=0;i

输入在一行中给出一个长度不超过1000的字符串。字符串由ASCII码表中任意可见字符及空格组成,至少包含1个英文字母,以回车结束(回车不算在内)。

在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。

ThisisasimpleTEST.ThereAREnumbersandothersymbols1&2&3...........输出样例:e7解题思路:首先看完题目之后,脑子里冒出一句话“人生苦短....”这题涉及到了字符串的大小写转换、字母出现次数的统计和字符大小比较,果断用Python写。第一行操作很骚,input().split()是把用户输入以空格为分隔符存入一个列表里面,然后利用"".join()把刚刚生成的列表中的所有元素存入字符串中,最后再用一个lower()来把字符串的所有大写字母转换成小写。输入解决了,接下来的事也很简单,遍历字符串s中的所有元素,如果这个字符是字母就判断它的出现次数是否最频繁,如果有出现次数一样频繁的多个字符,则输出字母序最小的那一个。

1s=("".join(input().split())).lower()2max_count=03foriins:4ifi.isalpha():5ifs.count(i)>max_count:6max_count=s.count(i)7max_char=i8elifs.count(i)==max_count:9ifi

输入在第一行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量。第二行给出M个不超过5的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0代表“非”,1代表“是”。随后N行,每行给出一个学生的解答。数字间均以空格分隔。

按照输入的顺序输出每个学生的得分,每个分数占一行。

36213345001011011001101010110011输出样例:131112解题思路:首先看完题目之后,按它的意思来就行了,建立一个数组来存放每道题的分值、建立一个数组来存取正确答案,然后输入每个学生的答案与正确答案一一比较计算出学生的分数进行输出即可。

1#include2usingnamespacestd;34intmain()5{6intn,m;7cin>>n>>m;//n为学生数,m为判断题数量8intweight[m];//每道题目的满分值9for(inti=0;i>weight[i];12}13inttrueAnswer[m];//每道题对应的正确答案14for(inti=0;i>trueAnswer[i];17}18intstuAnswer[m];19for(inti=0;i>stuAnswer[j];25if(stuAnswer[j]==trueAnswer[j])26{27score+=weight[j];28}29}30cout<

输入第一行给出一个正整数N(≤100),随后N行,每行按照编号-答案的格式给出一道题的4个选项,T表示正确选项,F表示错误选项。选项间用空格分隔。

在一行中输出wifi密码。

8A-TB-FC-FD-FC-TB-FA-FD-FA-FD-FC-FB-TB-TA-FC-FD-FB-FD-TA-FC-FA-TC-FB-FD-FD-TB-FC-FA-FC-TA-FB-FD-F输出样例:13224143解题思路:首先看完题目之后,果断用Python,重点是第三行代码,利用字符串中的find函数在输入的字符串s中寻找'T',将find函数的返回int型的值减去2就可以得到这一题正确答案,然而我们还需要调用ord()来把字符转换成ASCⅡ码,减去'A'再加1就可以得到题目所要求的A-1;B-2;C-3;D-4;输出就是WIFI密码。(我自己顺便记一下笔记:ASCⅡ码转成字符是用chr(),字符转ASCⅡ码是用ord(),一开始我直接用int,编译器报错了,然后我百度了一下Python字符和ASCⅡ码间的转换)

foriinrange(eval(input())):s=input()print(ord(s[s.find('T')-2])-ord('A')+1,end="")24.小赌怡情(15分)题目描述:常言道“小赌怡情”。这是一个很简单的小游戏:首先由计算机给出第一个整数;然后玩家下注赌第二个整数将会比第一个数大还是小;玩家下注t个筹码后,计算机给出第二个数。若玩家猜对了,则系统奖励玩家t个筹码;否则扣除玩家t个筹码。

注意:玩家下注的筹码数不能超过自己帐户上拥有的筹码数。当玩家输光了全部筹码后,游戏就结束。

输入在第一行给出2个正整数T和K(≤100),分别是系统在初始状态下赠送给玩家的筹码数、以及需要处理的游戏次数。随后K行,每行对应一次游戏,顺序给出4个数字:

n1btn2其中n1和n2是计算机先后给出的两个[0,9]内的整数,保证两个数字不相等。b为0表示玩家赌小,为1表示玩家赌大。t表示玩家下注的筹码数,保证在整型范围内。

对每一次游戏,根据下列情况对应输出(其中t是玩家下注量,x是玩家当前持有的筹码量):

1#include2usingnamespacestd;34intmain()5{6intT,K;//T为玩家初始筹码数,K为游戏次数7cin>>T>>K;8intx=T;//x是玩家持有的筹码量9for(inti=0;i>n>>b>>t>>m;13if(t>x)14{15printf("Notenoughtokens.Total=%d.\n",x);16continue;//直接进入下一局游戏17}18if(b==1)//玩家买大19{20if(nm)//猜中了34{35x+=t;36printf("Win%d!Total=%d.\n",t,x);37}38else//没猜中39{40x-=t;41printf("Lose%d.Total=%d.\n",t,x);42}43}44if(x<=0)//玩家输光之后45{46cout<<"GameOver."<

输入给出一个正整数N(2≤N≤104)。

在一行中输出题面中算式取到的不同值的个数。

2017输出样例:1480解题思路:首先看完题目之后,第一想法就是建立一个map来记录不同值,看清题for循环是从1开始遍历的,向下取整用的是floor函数,最后输出map的大小也就是不同值的个数。

1#include2usingnamespacestd;34intmain()5{6intn;7cin>>n;8mapm;9for(inti=1;i<=n;i++)10{11inttemp=floor(i/2)+floor(i/3)+floor(i/5);12m[temp]++;13}14cout<

每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。

在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。

1234567890987654321123456789输出样例:yisanwu解题思路:首先看完题目之后,我先自定义了一个transfer()函数用来将数字转换为拼音。然后根据题目意思来吧。我是用string来存放输入的数字的,然后用for循环将每一个数字取出来累加,算出累加和的个位十位百位分别是多少,然后调用自定义函数来完成转换。值得一提的是,我第一遍写的那段代码有一个测试用例无法通过,因为当sum的十位数是0是会无法输出'ling',比如999999999999这个输入,预期输出应该是"yilingba",然而实际输出是"yiba",知道错误原因之后,把那两个ifif改成if和elseif和else就能通过所有测试用例了。

下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。

输入第一行先给出一个正整数N(≤100),随后N行,每行给出一轮划拳的记录,格式为:

甲喊甲划乙喊乙划其中喊是喊出的数字,划是划出的数字,均为不超过100的正整数(两只手一起划)。

在一行中先后输出甲、乙两人喝酒的杯数,其间以一个空格分隔。

58109125105103851212181134161215输出样例:12解题思路:首先看完题目之后,发现这是水题,直接按照题目的意思来,思路见注释。

1#include2usingnamespacestd;34intmain()5{6intn;7cin>>n;8intm1,h1,count1=0;//m1是甲口中喊出的数,h1是甲用手比划的数,count1是甲喝酒的杯数9intm2,h2,count2=0;//m2是乙口中喊出的数,h2是乙用手比划的数,count2是乙喝酒的杯数10for(inti=0;i>m1>>h1>>m2>>h2;13if(m1+m2==h1&&m1+m2!=h2)//若只有甲比划的数字正好是俩人喊出的数字之和14{15count2++;//乙自罚一杯16}17elseif(m1+m2!=h1&&m1+m2==h2)//若只有乙比划的数字正好是俩人喊出的数字之和18{19count1++;//甲自罚一杯20}21else//剩下的情况就是甲乙平局22{23continue;//继续下一轮24}25}26cout<

例如,我们从6767开始,将得到

7766-6677=10899810-0189=96219621-1269=83528532-2358=61747641-1467=6174......现给定任意4位正整数,请编写程序演示到达黑洞的过程。

输入给出一个(0,104)区间内的正整数N。

如果N的4位数字全相等,则在一行内输出N-N=0000;否则将计算的每一步在一行内输出,直到6174作为差出现,输出格式见样例。注意每个数字按4位数格式输出。

6767输出样例1:7766-6677=10899810-0189=96219621-1269=83528532-2358=6174输入样例2:2222输出样例2:2222-2222=0000解题思路:首先看完题目之后,有一点懵,又看了俩边终于明白题目的意思了。第一步:将输入的数字按照个十百千位来进行非递增排序和非递减排序,第二步:用新生成的那个非递增排序的数减去非递减排序的数,第三步:将第二部得到的差重新进行第一步的操作,直到得到6174为止。若第一步中输入的那个数字个十百千位都相等,差值就输出0000。

1#include2usingnamespacestd;34intarr2num(inta[])//把数组里的数按照下标次序来组成一个新的数字5{6intn=0;7for(inti=0;i<4;i++)8{9n=n*10+a[i];10}11returnn;12}1314boolCmp(inta,intb)15{16returna>b;17}18intmain()19{20intn;21cin>>n;22inta[4];23do24{25for(inti=0;i<4;i++)//把每一位数存入数组里面26{27a[i]=n%10;28n/=10;29}30sort(a,a+4);//将数组a中的元素升序排列31intx=arr2num(a);//将数组a中的数字按非递减排序32sort(a,a+4,Cmp);//将数组a中的元素降序排列33inty=arr2num(a);//将数组a中的数字按非递增排序34n=y-x;35printf("%04d-%04d=%04d\n",y,x,n);36}while(n!=0&&n!=6174);37return0;38}29.输出PATest(20分)题目描述:给定一个长度不超过104的、仅由英文字母构成的字符串。请将字符重新调整顺序,按PATestPATest....这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出。

输入在一行中给出一个长度不超过104的、仅由英文字母构成的非空字符串。

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

redlesPayBestPATTopTeePHPereatitAPPT输出样例:PATestPATestPTetPTePePee解题思路:首先看完题目之后,第一反应就是建立一个map来记录每种字符有多少个,然后用while和if来操作,让程序按PATestPATest....这样的顺序输出。若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出。其实就是按照题目意思来写就行,水题。

1#include2usingnamespacestd;34intmain()5{6mapm;7strings;8cin>>s;9for(inti=0;i

输入在一行中依次给出A和B,中间以1空格分隔。

在一行中依次输出Q和R,中间以1空格分隔。

1234567890509876543217输出样例:176366841501410934743解题思路:首先看完题目之后,这么大个数直接无脑用Python,关于第一行输入的注释在前面的题中提到了这段代码中最秀的地方就是这个a,b,c=map(int,input().split())啦!map()函数的用法如下:map(func,[seq1,seq2,...])第一个参数接受一个函数名,后面的参数接受一个或多个可Python的函数编程中的map()函数是将FUNC作用于SEQ中的每一个元素,并将所有的调用的结果作为一个列表返回。然后整除和求余即可。

1a,b=map(int,input().split())2print(str(a//b)+""+str(a%b))31.挖掘机技术哪家强(20分)题目描述:为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

6365280110027034030输出样例:2150解题思路:首先看完之后的第一想法就是建立一个map,其中map的key值是参赛者所属学校的编号,value值是学校的总分。这里用一个max来记录总分最高的那个学校的编号。嗯,最后直接输出就行了。AC代码:1#include2usingnamespacestd;34intmain()5{6mapm;7intn;8cin>>n;9intmax=0;10for(inti=0;i>num>>score;14m[num]+=score;15if(m[num]>m[max])16{17max=num;18}19}20cout<

为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。

每个输入包含1个测试用例。每个测试用例分别在2行中先后给出摊主的珠串和小红想做的珠串,两串都不超过1000个珠子。

如果可以买,则在一行中输出Yes以及有多少多余的珠子;如果不可以买,则在一行中输出No以及缺了多少珠子。其间以1个空格分隔。

ppRYYGrrYBR2258YrR8RrY输出样例1:Yes8输入样例2:ppRYYGrrYB225YrR8RrY输出样例2:No2解题思路:首先看完题目之后有点懵啊,莫名其妙就开始慌了。又看了一遍题目之后,决定先建一个map压压惊,用来记录摊主的珠串中不同的珠子的数量。然后按照题意完成输入,在输入摊主珠串的时候记得用map记录每颗珠子的数,在输入小红想要的珠串时,用for循环对珠子进行遍历,如果其中有珠子是map中存在的就可以把它从map中取出来,并让计数器count记录总共取出来多少个。最后看看count和小红想要的珠串长度是否相等,若想等就说明小红可以买下它,输出多出的珠子数;否则说明珠子少了,小红不买它,输出缺少的珠子数。

1#include2usingnamespacestd;34intmain()5{6mapm;//用来记录每颗珠子的数7stringstrA,strB;//strA是摊主的珠串,strB是小红想要的珠串8cin>>strA>>strB;9intlenA=strA.length();10intlenB=strB.length();11for(inti=0;i0)19{20m[strB[i]]--;21count++;22}23}24if(lenB==count)25{26cout<<"Yes"<

例如地球人的数字29翻译成火星文就是helmar;而火星文elonov对应地球数字115。为了方便交流,请你编写程序实现地球和火星数字之间的互译。

输入第一行给出一个正整数N(<100),随后N行,每行给出一个[0,169)区间内的数字——或者是地球文,或者是火星文。

对应输入的每一行,在一行中输出翻译后的另一种语言的数字。

输入在一行中给出长度不超过105、以回车结束的字符串。

在一行中先后输出0的个数和1的个数,其间以空格分隔。

PAT(Basic)输出样例:34解题思路:首先看完题目之后,按着题目意思来吧,先输入一个字符串,然后遍历这个字符串判断其中的字符是不是字母,若是字母,把它转换成小写再去求它在字母表中的序号,将这个序号累加到sum。因为二进制只有0和1,所以没必要建一个map来存放0和1的个数,直接用数组吧,通过memset()函数对数组中的元素进行初始化。然后直接用sum对2求余和整除来转换二进制就行了,最后输出0和1的个数。

1#include2usingnamespacestd;34intmain()5{6strings;7getline(cin,s);8intsum=0;9for(inti=0;i0)19{20a[sum%2]++;21sum/=2;22}23cout<

对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……

我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?

每个测试输入包含1个测试用例,即给出正整数n的值。

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

3输出样例:5解题思路:看完题就知道这是一道水题,直接判断n的奇偶性,若n为偶数,n=n/2,若n为奇数就n=(3*n+1)/2,每次对n进行赋值的时候,计数器count++就行了,最后输出的count就是结果。AC代码:1#include2usingnamespacestd;34intmain()5{6intn;7cin>>n;8intcount=0;//用来计算从n到1需要的步数9while(n!=1)10{11if(n%2==0)//若n是偶数,则砍掉一半12{13n/=2;14count++;15}16else//若n是奇数,则砍掉(3n+1)的一半17{18n=(3*n+1)/2;19count++;20}21}22cout<

给定比赛的最终排名以及一系列参赛者的ID,你要给出这些参赛者应该获得的奖品。

输入第一行给出一个正整数N(≤104),是参赛者人数。随后N行给出最终排名,每行按排名顺序给出一位参赛者的ID(4位数字组成)。接下来给出一个正整数K以及K个需要查询的ID。

对每个要查询的ID,在一行中输出ID:奖品,其中奖品或者是MysteryAward(神秘大奖)、或者是Minion(小黄人)、或者是Chocolate(巧克力)。如果所查ID根本不在排名里,打印Areyoukidding(耍我呢?)。如果该ID已经查过了(即奖品已经领过了),打印ID:Checked(不能多吃多占)。

输入第一行给出三个正整数M(≤1000)、N和S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从1开始)。随后M行,顺序给出转发微博的网友的昵称(不超过20个字符、不包含空格回车的非空字符串)。

注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。

按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出Keepgoing...。

现给定所有队员的比赛成绩,请你编写程序找出冠军队。

输入第一行给出一个正整数N(≤104),即所有参赛队员总数。随后N行,每行给出一位队员的成绩,格式为:队伍编号-队员编号成绩,其中队伍编号为1到1000的正整数,队员编号为1到10的正整数,成绩为0到100的整数。

在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。

解压方法就是反过来,把形如5c这样的表示恢复为ccccc。

本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

输入第一行给出一个字符,如果是C就表示下面的字符串需要被压缩;如果是D就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过1000个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过1MB。

根据要求压缩或解压字符串,并在一行中输出结果。

现给定A、DA、B、DB,请编写程序计算PA+PB。

输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0

在一行中输出PA+PB的值。

38627676135302933输出样例1:399输入样例2:38627671135302938输出样例2:0解题思路:这题破天荒地写了三段代码。其实这三种解法思路都差不多,就是细节处理有区别,算了,下面还是把它们称之为思路吧。Python思路:看完这道题之后就觉得Python大法好啊,俩行代码AC。第一行代码不需要解释,第二行代码可以分解成三个步骤来理解:①调用字符串中的count函数得到字符串A中子字符Da的数量,用这个数量乘以字符Da,就可以得到题目中的Pa;②同理,调用字符串中的count函数得到字符串B中子字符Db的数量,用这个数量乘以字符Db,就可以得到题目中的Pb;③把Pa和Pb强制转换成int型再相加就能得到最后的结果。

C++思路一:C++的第一种求解思路,跟Python的思路大致相同。这里解释一下string型强制转换成int型的代码,atoi(Pa.c_str())。由于函数原型是intatoi(constchar*nptr),所以在调用的过程中应该先用c_str()把string型转换成char*的字符串,再通过atoi来转换成int型。

C++思路二:C++的第二种求解思路,这段代码中Pa和Pb都是int型,无需像前俩种解法一样进行string型到int型的强制转换,直接在遍历字符串的同时完成Pa和Pb的累加。

1A,Da,B,Db=input().split()2print(int(A.count(Da)*Daor"0")+int(B.count(Db)*Dbor"0"))C++AC代码一:1#include2usingnamespacestd;34intmain()5{6stringA,B;7charDa,Db;8cin>>A>>Da>>B>>Db;9stringPa="",Pb="";10for(inti=0;i2usingnamespacestd;34intmain()5{6stringA,B;7charDa,Db;8cin>>A>>Da>>B>>Db;9intPa=0,Pb=0;10for(inti=0;i

现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

输入第一行给出两个正整数N和p,其中N(≤105)是输入的正整数的个数,p(≤109)是给定的参数。第二行给出N个正整数,每个数不超过109。

在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

10823204516789输出样例:8解题思路:这题oj.hbu.cn上面写过,见注释。AC代码:1#include2usingnamespacestd;34intmain()5{6intn;//输入的正整数个数7longlongp;//给定的参数8cin>>n>>p;9longlonga[n];10for(inti=0;i>a[i];13}14sort(a,a+n);//对数组进行升序排序15intcount=1;//用来记录最长的完美数列长度16for(inti=0;i

测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

每个测试用例的输出占一行,输出倒序后的句子。

HelloWorldHereICome输出样例:ComeIHereWorldHello解题思路:看完题目之后就可以无脑用Python了。分步骤讲解一下吧,input().split()将输入的一行字符串以空格为分隔符添加到一个列表temp里,"".join(temp[::-1])是把列表temp中的元素倒序添加到一个以空格为分隔符的字符串里,这个字符串也就是最后的结果。

print("".join(input().split()[::-1]))43.组合数的和(15分)题目描述:给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字。要求所有可能组合出来的2位数字的和。例如给定2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。

输入在第一行中给出N(1

输出所有可能组合出来的2位数字的和。

3285输出样例:330解题思路:这是一道水题,送分题,无脑for循环组合出所有可能组合出来的2位数字,然后对他们累加求和就行了。AC代码:1#include2usingnamespacestd;34intmain()5{6intn;7cin>>n;8inta[n];9for(inti=0;i>a[i];12}13intsum=0;14//组合出所有可能组合出来的2位数字,并累加和15for(inti=0;i

输入在一行中依次给出A和B,均为不超过100位的正整数,其间以空格分隔。

在一行中输出加密后的结果。

*****************所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

19*输出样例:*****************2解题思路:先大致按照题目给的方向写,然后一点一点试错,最后AC。AC代码:1#include2usingnamespacestd;34intmain()5{6intn;7charc;8cin>>n>>c;9intm=sqrt((n+1)/2);//沙漏单边的层数10//打印沙漏的上部分11intcount=0;//用来记录沙粒的个数12for(inti=0;i0;j--)19{20cout<

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为00。

34-5261-20输出样例:123-10160解题思路:我感觉这题不值25分,算得上是25分题里的水题吧。

1#include2usingnamespacestd;34intmain()5{6inta,n;7boolflag=false;8while(cin>>a>>n)9{10if(a*n)11{12if(flag)13{14cout<<"";15}16flag=true;17cout<

输入第一行给出一个正整数N(≤100),随后N行,每行给出一个用户设置的密码,为不超过80个字符的非空字符串,以回车结束。

对每个用户的密码,在一行中输出系统反馈信息,分以下5种:

给定N段绳子的长度,你需要找出它们能串成的绳子的最大长度。

每个输入包含1个测试用例。每个测试用例第1行给出正整数N(2≤N≤104);第2行给出N个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过104。

在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。

输入第一行给出一个正整数N(2≤N≤10000),随后一行给出1到N的一个洗牌后的排列,第i个数表示正面写了i的那张卡片背面的数字。

按照“差值重复次数”的格式从大到小输出重复的差值及其重复的次数,每行输出一个结果。

本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是2位正整数;把甲的能力值的2个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的X倍;乙的能力值是丙的Y倍。请你指出谁比你强应“从之”,谁比你弱应“改之”。

输入在一行中给出三个数,依次为:M(你自己的能力值)、X和Y。三个数字均为不超过1000的正整数。

在一行中首先输出甲的能力值,随后依次输出甲、乙、丙三人与你的关系:如果其比你强,输出Cong;平等则输出Ping;比你弱则输出Gai。其间以1个空格分隔,行首尾不得有多余空格。

注意:如果解不唯一,则以甲的最大解为准进行判断;如果解不存在,则输出NoSolution。

给定正整数数列,求出全部片段包含的所有的数之和。如本例中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位。

现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(≤N)。

输入第一行给出一个正整数N(≤105),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。

在一行中给出N天的爱丁顿数。

现在给定一些复数空间的特征值,请你计算并输出这些特征值的谱半径。

输入第一行给出正整数N(≤10000)是输入的特征值的个数。随后N行,每行给出1个特征值的实部和虚部,其间以空格分隔。注意:题目保证实部和虚部均为绝对值不超过1000的整数。

在一行中输出谱半径,四舍五入保留小数点后2位。

50120-10330-3输出样例:4.24解题思路:谱半径就是最大模,而模为实部与虚部的平方和的开方,要求谱半径只需要找出实部、虚部最大的平方和即可。AC代码:1#include2usingnamespacestd;34intmain()5{6intn;7cin>>n;//输入的特征值的个数8doubleans=0;//最大模的平方9for(inti=0;i>a>>b;13ans=max(a*a+b*b,ans);14}15printf("%.2lf\n",sqrt(ans));16return0;17}54.我要通过!(20分)题目描述:“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送——只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

1.字符串中必须仅有P、A、T这三种字符,不可以包含其它字符

2.任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串;

3.如果aPbTc是正确的,那么aPbATca也是正确的,其中a、b、c均或者是空字符串,或者是仅由字母A组成的字符串。

现在就请你为PAT写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

每个测试输入包含1个测试用例。第1行给出一个正整数n(<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过100,且不包含空格。

每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出YES,否则输出NO。

8PATPAATAAPATAAAAPAATAAAAxPATxPTWhateverAPAAATAA输出样例:YESYESYESYESNONONONO解题思路:额,看了若干遍题目之后发现字符串中只能有一个P一个T,A只要不为0就行了,随便放哪儿。有个条件就是必须满足P前面A的个数*P与T之间A的个数等于T后面A的个数,简单来说就是若P和T中间有n个A,则末尾就得加上n*(P前面A的数量)个A,P和T中间不能一个A都没有。

每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

现给定两个复数的R和P,要求输出两数乘积的常规形式。

输入在一行中依次给出两个复数的R1,P1,R2,P2,数字间以空格分隔。

在一行中按照A+Bi的格式输出两数乘积的常规形式,实部和虚部均保留2位小数。注意:如果B是负数,则应该写成A-|B|i的形式。

现给出一批考生的德才分数,请根据司马光的理论给出录取排名。

输入第一行给出3个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。

随后N行,每行给出一位考生的信息,包括:准考证号德分才分,其中准考证号为8位整数,德才分为区间[0,100]内的整数。数字间以空格分隔。

输出第一行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

输入在4行中分别给出4个非空、不包含空格、且长度不超过60的字符串。

输入在1行中分别给出P和A,格式为Galleon.Sickle.Knut,其间用1个空格分隔。这里Galleon是[0,107]区间内的整数,Sickle是[0,17)区间内的整数,Knut是[0,29)区间内的整数。

在一行中用与输入同样的格式输出哈利应该被找的零钱。如果他没带够钱,那么输出的应该是负数。

10.16.2714.1.28输出样例1:3.2.1输入样例2:14.1.2810.16.27输出样例2:-3.2.1解题思路:看完题目,脑子里冒出一句话“人生苦短,....”后半句不说了。直接无脑用Python,1~3行基操勿6,12行调用了divmod函数。python真的是蒂花之秀,它这个divmod()函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a//b,a%b)。然后我把元组中的值直接赋给了列表C中的第0个和第1个元素。

1l=input().split()2P=list(map(int,l[0].split('.')))3A=list(map(int,l[1].split('.')))4Psum=(P[0]*17+P[1])*29+P[2]#哈利应付的价钱为Psum5Asum=(A[0]*17+A[1])*29+A[2]#哈利实付的价钱为Asum6Csum=Asum-Psum#哈利应该被找的零钱为Csum7sign=""8ifCsum<0:9sign="-"10Csum=abs(Csum)11C=[0,0,0]12C[0],C[1]=divmod(Csum//29,17)13C[2]=Csum%2914print(sign+".".join(str(i)foriinC))60.继续(3n+1)猜想(25分)题目描述:卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。

当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算3、5、8、4、2、1,则当我们对n=5、8、4、2进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这4个数已经在验证3的时候遇到过了,我们称5、8、4、2是被3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆盖。

现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。

每个测试输入包含1个测试用例,第1行给出一个正整数K(<100),第2行给出K个互不相同的待验证的正整数n(1

每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用1个空格隔开,但一行中最后一个数字后没有空格。

现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。

输入在一行给出正整数N。

在一行中输出不超过N的满足猜想的素数对的个数。

现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。

输入第一行给出正整数N(≤1000),为居民区住房总套数;正实数e,即低电量阈值;正整数D,即观察期阈值。随后N行,每行按以下格式给出一套住房的用电量数据:

KE1E2...EK

其中K为观察的天数,Ei为第i天的用电量。

在一行中输出“可能空置”的比率和“空置”比率的百分比值,其间以一个空格分隔,保留小数点后1位。

每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(≤105)、以及正整数K(≤N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用1表示。

接下来有N行,每行格式为:

AddressDataNext其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。

对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

本题要求你写个程序帮助这所学校的老师检查所有学生的物品,以助其成大器。

输入第一行给出两个正整数N(≤1000)和M(≤6),分别是学生人数和需要被查缴的物品种类数。第二行给出M个需要被查缴的物品编号,其中编号为4位数字。随后N行,每行给出一位学生的姓名缩写(由1-4个大写英文字母组成)、个人物品数量K(0≤K≤10)、以及K个物品的编号。

顺次检查每个学生携带的物品,如果有需要被查缴的物品存在,则按以下格式输出该生的信息和其需要被查缴的物品的信息(注意行末不得有多余空格):

THE END
1.www.jxmzxx.com{$woaini}>www.jxmzxx.com{$woaini}再看浙江。前三季度,浙江装备、高新技术、战略性新兴和数字经济等新兴产业增加值同比分别增长10.3%、8.5%、7.7%和7.5%。服务机器人、智能手机、新能源汽车、集成电路等产品产量呈现两位数增长。 上海新质生产力的牵引作用不断涌现。前三季度,上海市三大先导产业制造业总产值同比增长8.6%,增速较上半年加快2.5个百分点http://www.jxmzxx.com/appnews/630593
2.防电信诈骗班会记录(通用6篇)随着科技日渐进入人们的生活,与此同时,新兴的犯罪手段也随之诞生。电信诈骗的案例屡见不鲜,多则上百万元,少则几百元,犯罪分子的诈骗花样让我们防不胜防。为此,为防止我们大学生受电信诈骗,将犯罪分子诈骗手段进行分类,给予了解。此次活动意义: 1、不让自己利益受到伤害,同时也避免自己身边的人利益受到伤害。 https://www.360wenmi.com/f/filec9v51v3l.html
3.带崽远离恶毒婆婆,我在末世前暴富了最新章节列表奇幻玄幻《带崽远离恶毒婆婆,我在末世前暴富了》,现已完结,主要人物是万云彭吴真真,文章的原创作者叫做“瓶子精”,非常的有看点,小说精彩剧情讲述的是:“赔钱货,还不滚?”还没等她彻底清醒,就听到了一个熟悉的声音。她重生了?还重生回到了末世降临前!上一世,她命苦,嫁给了一个不作为的男人,还有恶婆婆恶语http://www.zlbx5.com/bxxsb/620437/
4.1.28万字剧情详解自己造的“孽”,跪着也要走完(内含严重剧透我比较喜欢看四个月前的男主和四个月后的男主斗法,四个月前的优势在于脸皮比较厚,四个月后的优势在于拥有对方的全部记忆,新男主去改变旧男主的爱情轨迹,结果自己回到2022年后,因为天降他与女主的恋爱过程,所以不得不背负渣男形象,真是自己给自己挖坑。先统一本文称呼,2021年的何正钰称为“旧男主”,2022年的https://movie.douban.com/review/14712409/
5.一个人有没有中大奖的命中奖暴富前征兆有哪些因为八字中没有钱,这也表明这个人心里不太注意钱,把钱放在心上,所以他可以有意想不到的快乐。他通常是中奖和赌博的获利者,也可能是投机性的运气,容易致富。无论你如何获得意想不到的钱,这种生活方式的人在生活中总是会被别人羡慕。 中奖暴富前征兆有哪些https://www.qiyuange.com/bazi/76383.html
6.纳帅:我们今天做到了此前在欧洲杯上经常做不到的事情pg不凡成就非凡是什么,沙芭体育的网站,实况足球2013补丁,广发娱乐在线登录入口,四人坦克五楼体育直播官方下载,开元酒店集团,944cc246c,黄色书,联机平台2024新澳门资料大全,台湾大宝osg,3d的中奖规则,澳门挂牌正版挂牌之全篇必备攻略,Fun88乐体育|英超官方赞助商潍坊亚星化学好进吗,捕鱼挣钱,澳门正版资料免费大全,四人斗http://m.gst029.cn/LSA/moa/wKMQqB.html
7.回到成为植物人前,我修仙无敌了最新章节(青珏宸宸),回到成为植物刚重生就遇渣爹带着新欢过来放弃抚养权。母亲不久后失业,还要供三个读书的孩子,家里穷的响叮当。不过乔凝熏发现自己可以修仙,那什么问题就都不是问题了。随着时间的推移,大家发现乔家的蔬菜水果是长得最好的,最甜的。乔家的人每一次上山,总是收获满满,别人找不到的羊肚菌、牛肝菌、鸡https://www.shuhaige.net/244471/
8.?76人队史共7次开局前12战赢球不超过2场仅1次打入季后赛11月17日讯 本赛季76人开局不利,目前他们以2胜10负的战绩排名东部第14位。 据统计,76人队史出现过7次开局前12场赢球不超过2场的情况,其中只有1次(2010-11赛季)闯入了季后赛。 而最近一次76打出如此糟糕的开局,还有追溯到2016-17赛季,而那是恩比德来到76人后打的第一个完整赛季。 http://m.kgmautoid.com/AIW/detail/pYukldbuRksg.html
9.?WELCOME试玩入口?.?:湖人有意的6大中锋湖人对于中锋的需求一直都很强烈。近日,NBA名宿奥尼尔转发湖人有意的中锋,一共6个人,其中包括奇才的瓦兰丘纳斯,也包括目前身为自由球员、前湖人球员霍华德。湖人到底想要谁来搭档戴维斯? 1、沃克-凯斯勒,爵士 凯斯勒是爵士在2022年第22顺位选择的中锋,目前还处在新秀合同期内。他身高2.13米,体重111公斤,具有符合湖人http://m.groeqx.com/OHZ/moa/euanbTde.html
10.quinovare.com/xxxr84821217<!DOCTYPE/360229.shtml过去几年,借助地处黄河故道的优势,任庄村发展起了乡村生态旅游,相继建成月季坡、情侣岛、天鹅湖、白鹭洲、黄河之光喷泉和庄子垂钓台等一批景点,每周都能吸引万余人前来观光旅游。 "以前外出打工也挣不了多少钱,我们村开发乡村旅游后,我就回来搞了农家乐。每到节假日,就会有周边游客驱车赶来,坐在院子里,品一尾刚http://quinovare.com/xxxr84821217%3C!DOCTYPE/360229.shtml
11.球报:曼联任命阿莫林前就喜欢昆达,希望明夏引进&解约金1亿欧11月17日讯 葡萄牙《球报》报道,曼联在任命阿莫林为主帅之前就很欣赏葡萄牙体育边锋乔瓦尼-昆达,红魔希望在明夏引进这名17岁的边锋。 报道称,曼联希望尽快完成昆达的交易,此前阿莫林已经表示,自己不会在一月份从老东家葡萄牙体育那里挖人,因此曼联可能在明夏做出行动。 据悉,昆达合同的解约金高达1亿欧元,而曼联首次报http://m.high-share.net/ZZR/moa/OxNDv.html
12.埃贝尔:正和穆西亚拉就续约深入谈判希望能在圣诞节前完成12月1日讯 拜仁在本轮德甲客场1-1绝平多特,穆西亚拉头槌建功,总监埃贝尔在赛后被问及有关穆西亚拉能否在圣诞节前续约的话题。 埃贝尔对此表示:“我们正在进行非常深入的对话,我希望能把它(穆西亚拉的续约合同)放在每个人的圣诞树下,但今天还不能作出保证。” 21岁的穆西亚拉当前合同将在2026年到期,根据此http://m.ayoetwc.cn/20241201/4117347545.html
13.阿隆索:博尼费斯能否在圣诞节前复出?现在说这些还为时过早六盒宝典资料免费大全下,赛马会app下载安卓版本2024,www.ebc-fin.com,凯时app官方首页,澳门巴黎人棋牌网站官网千炮捕鱼旧版本游戏,体育彩票中奖500万,澳门永乐高官网入口,大宝pT游戏登录,彩票656官方版软件介绍红福彩票登录入口,六六大顺红包版下载安装最新版本,港澳至尊app官方下载最新版本,观看体育赛事的app,米乐m6官网http://m.cgsovdf.cn/20241204/527.html
14.考辛斯:拉梅洛性福联盟月韩,hlw88.cv,17c.com偷拍人妻出轨,AG8亚洲国际游戏官网,三分pk拾是不是公开djr.asia下载,3d开机号对应码牛彩网,一分彩开奖结果中奖查询,开云竞彩猜菠菜平台,49图库大全免费资料图2024真人麻将平台下载哪里有啊,澳门棋牌.官网备用8.中国,8846威尼斯,177cc彩票官网app下载,正版威斯尼斯人最新版AB娱乐网页http://m.xgccdn.cn/HGK/moa/SGjpDdihZe.html