
PTA
PTA的题过于简单,没有刷的必要性
程序员萌芽
夜半荧屏映月华,
指尖飞舞写天涯。
代码千行凝智慧,
bug除尽见朝霞。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串循环左移 详解
题目描述输入一个字符串和一个非负整数N,要求将字符串循环左移N次。输入格式:输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。输出格式:在一行中输出循环左移N次后的字符串。输入样例:Hello World!2输出样例:llo World!He思路分析在学习计算机的时候,我们经常讲到计算思维,就是说从计算机的视角去思考问题。回到这道题,移动字符串,人的视角就是直接搬动,计算机不行,计算机的程序都是一步一步来原创 2022-03-20 12:54:38 · 3038 阅读 · 6 评论 -
逆序的三位数
题目程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。输入格式:每个测试是一个3位的正整数。输出格式:输出按位逆序的数。样例:">输入样例:123输出样例:321代码#include<stdio.h>int main(){ int i; char a[4]; scanf("%s",a); if(a[2]=='0') for(i=2;i>原创 2022-03-14 09:42:09 · 1718 阅读 · 0 评论 -
删除字符串中的子串
题目输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。输入格式:输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。输出格式:在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。输入样例:Tomcat is a male ccatatcat输出样例:Tom is a male 碎碎念念要用上find函数和erase函数,注意当find函数没有找到时它返回的是strin原创 2022-03-13 08:23:43 · 1521 阅读 · 0 评论 -
打印 九九乘法表 九九口诀表
题目下面是一个完整的下三角九九口诀表:1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1原创 2022-03-12 09:35:52 · 2820 阅读 · 0 评论 -
龟兔赛跑 详解
题目乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息。乌龟每分钟可以前进3米,兔子每分钟前进9米;兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟,若发现自己超过乌龟,就在路边休息,每次休息30分钟,否则继续跑10分钟;而乌龟非常努力,一直跑,不休息。假定乌龟与兔子在同一起点同一时刻开始起跑,请问T分钟后乌龟和兔子谁跑得快?输入格式:输入在一行中给出比赛时间T(分钟)。输出格式:在一行中输出比赛的结果:乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_原创 2022-03-12 09:17:12 · 2060 阅读 · 0 评论 -
德才论+坑详解
1015 德才论 (25 分)宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输入第一行给出 3 个正整数,分别为:N(≤105),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于..原创 2022-03-05 21:12:38 · 390 阅读 · 0 评论 -
挖掘机技术哪家强
题目为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式:输入在第 1 行给出不超过 105 的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。输出格式:在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。输入样例:63 652 801 1002 70原创 2022-02-10 17:32:22 · 136 阅读 · 0 评论 -
旧键盘 C语言
题目旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。输出格式:按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。输入样例原创 2022-02-10 13:13:32 · 342 阅读 · 0 评论 -
人口普查 C语言
题目某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入格式:输入在第一行给出正整数N,取值在(0,105];随后N行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按yyyy/mm/dd(即年/月/日)格式给出的生日。题目...原创 2022-02-09 20:35:57 · 324 阅读 · 0 评论 -
打印沙漏 C语言
题目本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符原创 2022-02-09 15:51:55 · 3617 阅读 · 2 评论 -
科学计数法 C语言
题目科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。输入格式:每个输入包含 1 个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。输出...原创 2022-02-08 14:58:36 · 1750 阅读 · 0 评论 -
组个最小数 C语言
题目给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。输出格式:在一行中输出原创 2022-02-08 11:18:55 · 2314 阅读 · 0 评论 -
D进制的A+B C语言
题目输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数 A、B 和 D。输出格式:输出 A+B 的 D 进制数。输入样例:123 456 8输出样例:1103碎碎念念注意到A+B==0的情况,要特判,输出0。代码#include<stdio.h>#include<string.h>int main(){ in原创 2022-02-08 11:02:34 · 592 阅读 · 0 评论 -
复数乘法 C语言
题目复数可以写成(A+Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2=−1;也可以写成极坐标下的指数形式(R×e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式R(cos(P)+isin(P))。现给定两个复数的 R 和 P,要求输出两数乘积的常规形式。输入格式:输入在一行中依次给出两个复数的 R1, P1, R2, P2,数字间以空格分隔。输出格式:在一行中按照 A+Bi 的格式输出两数乘积的常规形式,实部和虚...原创 2022-02-07 21:09:08 · 1583 阅读 · 0 评论 -
A除以B C语言
题目本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。输入格式:输入在一行中依次给出 A 和 B,中间以 1 空格分隔。输出格式:在一行中依次输出 Q 和 R,中间以 1 空格分隔。输入样例:123456789050987654321 7输出样例:17636684150141093474 3碎碎念念1000位,4字节的int能存10位,8字节的long long能原创 2022-02-07 20:59:10 · 2536 阅读 · 0 评论 -
数字黑洞 C语言
题目给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174... .原创 2022-02-07 20:53:14 · 746 阅读 · 0 评论 -
划拳 C语言
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。输入格式:输入第一行先给出一个正整数N(≤100),随后N行,每行给出一轮划拳的记录,格式为:甲喊 甲划 乙喊 乙划其中喊是喊出的数字,划是划出的数字,均为不超过 100 的正整数(两...原创 2022-02-01 15:23:55 · 338 阅读 · 0 评论 -
考试座位号 C语言
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号。其中准考证号由 16 位数字组成,座位从 1 到N编号。输入...原创 2022-02-01 15:13:33 · 3298 阅读 · 0 评论 -
跟奥巴马一起编程 C语言
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入格式:输入在一行中给出正方形边长 N(3≤N≤20)和组成正方形边的某种字符 C,间隔一个空格。输出格式:输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。输入原创 2022-02-01 14:56:52 · 205 阅读 · 0 评论 -
查验身份证 C语言
碎碎念念这道题很坑。注意这里的权重是直接乘上去,一开始我乘的是百分之几,死活不知道哪里有问题,后来把一百乘上去,就对了。代码#include<stdio.h>int test(char num[]){ int i; for(i=0;i<17;i++) { if(num[i]<'0'||num[i]>'9') return 0; } int sum,z; sum=(num[0]-'0')*7+(num[1]-'0')*9+(num[2]-'原创 2022-01-30 20:58:20 · 2825 阅读 · 0 评论 -
程序运行时间 C语言
1026 程序运行时间 (15 分)要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。这个时间单位是 clock tick,即“时钟打点”。同时还有一个常数 CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个函数 f 的运行时间,我们只要在调用 f 之前先调用 clock(),获得一个时钟打点数 C1;在 f 执行完成后再调用 clock(),获得另一个时钟打点数原创 2022-01-30 15:45:39 · 221 阅读 · 0 评论 -
个位数统计 C语言
1021 个位数统计 (15 分)给定一个k位整数N=dk−110k−1+⋯+d1101+d0(0≤di≤9,i=0,⋯,k−1,dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要...原创 2022-01-30 15:30:48 · 935 阅读 · 0 评论 -
锤子剪刀布 C语言
1018 锤子剪刀布 (20 分)大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输入第 1 行给出正整数N(≤105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。输出格式:输出第 1、2 行分别给出...原创 2022-01-30 15:18:00 · 170 阅读 · 0 评论 -
部分A+B C语言
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<109。输出格式:在一行中输出PA+PB的值。输入样例 1:...原创 2022-01-30 14:20:38 · 137 阅读 · 0 评论 -
一元多项式求导 C语言
知道高中的求导公式这道题不难,但要注意求导过后如果是零多项式要输出0 0。#include<stdio.h>int main(){ struct derivation { int factor; int index; }deri[1000]; int i=0,count; while(1) { scanf("%d %d",&deri[i].factor,&deri[i].index); if(deri[i].index==0) break原创 2022-01-25 15:57:34 · 1248 阅读 · 0 评论 -
福尔摩斯的约会 C语言
1014 福尔摩斯的约会 (20 分)大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母D,代表星期四;第 2 对相同的字符是E,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到...原创 2022-01-27 16:56:45 · 162 阅读 · 0 评论 -
数素数 C语言
题目:令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤10000,请输出 PM 到 PN 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103思路看原创 2022-01-27 11:21:15 · 505 阅读 · 0 评论 -
数字分类 C语言
注释一开始没认真看题目,以为输入的都是要分类的数字,后来经过各种问题排查,发现了输入的第一个数字是分类数字的数目。这就简单了。对于输出N的情况,设五个tag;一个循环,不用数组,读一个判断一个。代码#include<stdio.h>int main(){ int i,t,tag1=0,tag2=0,tag3=0,tag4=0,tag5=0,a1=0,a2=0,a3=0,a5=0,count2=0,count4=0,n; float sum4=0,a4=0; sca原创 2022-01-26 18:40:53 · 1462 阅读 · 0 评论 -
A+B和C C语言
用long long去存储。#include<stdio.h>int main(){ int t,i; long long a,b,c; scanf("%d",&t); for(i=1;i<=t;i++) { scanf("%lld %lld %lld",&a,&b,&c); if(a+b>c) printf("Case #%d: true\n",i); else printf("Case #%d: false\原创 2022-01-26 17:14:10 · 288 阅读 · 0 评论 -
哥德巴赫猜想
嗯,直接上。#include<stdio.h>#include<math.h> int judge(int x){ int i; for(i=2;i<=sqrt(x);i++) { if(x%i==0) break; } if(i>sqrt(x)) return 1; else return 0;} int main(){ int t; scanf("%d",&t); int i,j,k=0; for(i=2;i&原创 2022-01-26 17:12:30 · 243 阅读 · 0 评论