1034有理数四则运算
主要问题:a.求最大公约数 b.分数化为最简+提取整数
a.求最大公约数的方法:枚举法,辗转相除法,更损相减法(来源https://blog.csdn.net/melonyzzZ/article/details/127572119)
以下为辗转相除法
long long gcd(long long t1, long long t2)
{
return t2 == 0 ? t1 : gcd(t2, t1%t2); //求最大公约数,辗转相除法
}
b.化简+提取整数:设置flag判断符号,设置判断语句
最厉害的操作还是,将四则运算,通过人为划分,归结为一种形式,即只需处理分子和分母
1035插入与归并
主要问题:a. 判断插入or归并,需要知道其性质?b.再迭代一轮 c.测试点5(不足归并数量),测试点6(迭代次数问题)
插入排序的特性:前面排序过的是有序的,后面没有排序的序列与原序列相同。可以由此判断排序类型
归并排序的处理方式
for(i = 0; i < n / k; i++)
{
sort(a+i*k,a+(i+1)*k);
}
sort(a + n / k * k, a + n);
sort函数的使用
1036跟奥巴马一起编程
注意四舍五入
int sheru(double a)
{
if(a > 0)
return a-int(a) >= 0.5? int(a+1):int(a);
else
return -a - int(-a) >=0.5? -(int(-a)+1) : -int(-a);
}
1037 在霍格沃兹找零钱
笨蛋方法:换算成最小单位进行运算
大佬方法:直接进行加减运算,并进行进位换算
1038 统计同成绩学生
1039 到底买不买
字符串匹配问题?初步设想,已空间换时间,将两组分别转换为两个数组
看答案后发现,通过字符直接转化为asc码实现
1040 有几个PAT
感觉不简单,第一反应是枚举,从头开始找P,然后找这个P之后的A和T
看了大佬柳婼的做法,太神奇了。将问题转换成了一个数学问题,类似于低级排列组合?以A为心,A前面的P的个数*A后面的T的个数=该A的种类,将所有A的可能性加起来,即为结果。以此为中心,实际从T下手
算法过程:先遍历字符串中T的总个数;从前往后遍历,遇到T则countT--,遇到P则countP++,遇到A则countT*countP,即为A1的种类。再往后遍历,一直到最后。
这个思路真的太厉害了!每个sum都要取余
![](https://i-blog.csdnimg.cn/blog_migrate/d23bca4a4f24475ccdc98b133b0c05fe.png)
1041 考试座位号
脑子抽抽了没输入,下一题
1042 字符统计