PTA乙级速刷

1034有理数四则运算

参考https://blog.csdn.net/liuchuo/article/details/51994755?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167772130016782428642267%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167772130016782428642267&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-51994755-null-null.blog_rank_default&utm_term=1034&spm=1018.2226.3001.4450

  • 主要问题: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都要取余

1041 考试座位号

  • 脑子抽抽了没输入,下一题

1042 字符统计

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值