- 博客(7)
- 收藏
- 关注
原创 PAT B1024/A1073
这是一道科学计数法转换的题目,这里我们对其输入格式非常清晰,使用一个字符串str接受输入,如果一开始是-号,则直接输出,并使用字符串num存储有效的数字,最后使用tail_num存储阶码即可。 一开始的思路是进行double类型的浮点数运算,对阶码大于0和小于0两种情况分别进行处理,这样可以得到争取的结果,但无法对保留的位数进行取舍,无法满足题设中关于:保留原来的有效数字,包括尾数的0的要求。 因此这里直接进行字符串的处理,对阶码为+,-分别进行讨论,阶码为-时,若为0,则直接输出该数,若不为0,则一定
2022-02-09 14:51:52 343
原创 PAT B1014/A1061
思路:题意非常直观,输入四个字符串,前两个字符串得到星期和小时,后两个字符串得到分钟;其中,前两个字符串同时出现的第一个大写字母标识星期,第二对相同的字符标识小时。而后两个字符的第一对相同的英文字母出现的位置标识分钟。 出错原因:前两组数据限定是要分别限定在A到G和A到N,因为这个范围内的才是有意义的,不能直接简单的限定为A到Z。 ...
2022-02-09 14:29:47 358
原创 PAT B1010
思路:利用Ain数组储存系数,将对应次数作为数组下标,这里下标是隐含的,因此只需要一个数组储存系数即可,储存完毕后遍历数组,当数组中的对应系数不为0时,进行运算Ain[i]*i,并将结果存储在Aout[i-1]的位置处,遍历完成后输出Aout中的非零元素,代码如下: for(i=MaxSize-1;i>=1;i--){ if(Ain[i]!=0){ Aout[i-1] = Ain[i]*i; } } 这里有些需要注意的点是: 1. 输入时连续输入整数,但需要输入多组整数,所以使
2022-01-19 17:16:24 131
原创 PAT A1025
思路:将输入全部保存在结构体中,然后对每组输入,先进行组内排序得到其local_rank,location_number很容易获得,随着读入组数的递增而递增。当数据读完后,对结构体数组进行整体排序,得到最终的final_rank并输出。 几个需要注意的点是: 1. 排序时按照成绩从高到低,成绩相同时,按照学号从小到大。因此cmp函数为: bool cmp(Registration a,Registration b){ if(a.grade != b.grade) return a.grade &g
2022-01-18 15:41:19 114
原创 PAT A1046
思路: 1. 题意为输入点数以及点之间的距离,要求给出点对,输出点之间的最短距离。 2. 处理时确定点对的大小顺序,分别计算从小到大的和sum1,以及从大到小的和sum2,之后对两数进行比较,确定较小的数并输出。代码如下 #include<cstdio> int a[100010]; int p1[10010]; int p2[10010]; int shortest_way(int n,int c,int b){ int sum1=0,sum2=0,i; int low,high;
2022-01-16 14:20:36 301
原创 PAT B1008
思路: 1.一开始和参考解法想的一样,就是直接输出,先输出后半元素,再输出前半的元素,不改变数组的内容。 2.但又放弃了这个想法,因为感觉是要变换数组,所以还是尝试了一个变换的方法。但变换方法显然比直接输出要差很多。 3.因为这里没有想到好的变换方法,所以变换方法肯定无法达到题中要求的尽可能减小移动次数的要求,这里的想法是定义函数用于一次移动,之后对n次移动,只需运行n次该函数即可。代码如下: #include<cstdio> int a[110]; void move(int* &a
2022-01-15 23:26:54 181
原创 PAT B1032
思路:初始化学校成绩数组school[100000],其中第i位代表第i个学校的成绩,且初始化为0;之后输入N以及N位参赛者的数据,输入时将对应学校的成绩+1,输入完毕后,遍历school数组并输出成绩最大的学校序号以及成绩。代码如下: #include<cstdio> int school[100000]={0}; int main(){ int n; int schoolnum,score,size=0; scanf("%d",&n); while(n--){ sca
2022-01-15 23:16:59 258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人