随笔分类 - 刷题笔记
摘要:“快速幂”被归结为一个a的b次方对m取余的问题,即 ab % m 问题的关键在于怎么更快地求得ab,直观的做法是用b次循环去累乘a,时间复杂度是O(b)。而“快速幂”,又成为“二分幂”,通过二分的思想能在O(logb)的复杂度内求得ab。 如果次数b是奇数,则ab可以拆解为a*ab-1 如果次数b是
阅读全文
摘要:###1.二分法求方程根 二分法求根基于二分查找的思想。 比如求根号2的近似值,猜测它在1到2之间,则将1作为left,2作为right,反复二分比较f(mid)的平方与2的大小,直到(right-left)的精度eps控制在一定范围以内。 代码: #include <iostream> using
阅读全文
摘要:【PAT B1016】 题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805306310115328 B1016考察的关键是如何枚举获取整数的每一位。 一个整数A,对A取余能拿到它的个位,令A除以10能让A去掉个
阅读全文
摘要:【PAT B1011】 题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805312417021952 注意点: (1)要注意数据类型。int表示的范围是-231 ~231-1,所以不能用int,而且A+B的范围可
阅读全文
摘要:散列的思想是将某个元素尽可能唯一地映射到一个整数,即用一个数唯一地表示一个元素。 实例1: 查找m个数在n个数中是否出现。 例如n=5的数组{1,2,3,4,5},查找m=3的3个数{1,2,0},则1和2存在,0不存在。 实例2: 查找m个数在n个数中出现的次数。 例如n=5的数组{1,2,2,3
阅读全文
摘要:C++库函数sort()可以提供对各种类型数据的排序,有三个参数。前两项指定排序的对象,最后一项为自定义比较规则的cmp(compare)函数。 【实例1】 有一组学生的信息。给出每个学生的学号和分数,按分数从高到低排序。分数相同的,按学号从低到高排序。 输入格式: 第一行给出学生数量n。 下面给出
阅读全文
摘要:【PAT B1009】 输入一行字符串,字符串总长度不超过80,由若干个单词和空格组成。 倒序输出其中的单词组成的字符串。 输入样例: Hello World Here I Come 输出样例 Come I Here World Hello 思路: 先整行读入字符串,然后根据空格分割单词。用一个二维
阅读全文
摘要:【codeup 5901】 输入一串字符,判断是否是回文串。“回文串”就是正读和反读一样的字符串,如“level”,“noon”。 思路: 读取字符串s,遍历前一半,对比和对称位置的字符是否一样就行。 #include <iostream> #include <cstring> using name
阅读全文
摘要:【PAT B1022】 输入两个非负10进制整数A和B(≤2^30−1),输出 A+B 的 D (1<D≤10)进制数。 输入格式: 输入在一行中依次给出 3 个整数 A、B 和 D。 输出格式: 输出 A+B 的 D 进制数。 输入样例: 123 456 8 输出样例: 1103 思路: 除基取余
阅读全文
摘要:【codeup 1928】 输入两个日期,求两者相差的天数。(对连续的两天,规定相差2) 样例输入: 20130101 20130105 样例输出: 5 思路: 假设两个日期,第一个比第二个小。让第一个日期不断累加,直到两者相等。 为减少累加次数,先判断年份之差,如果至少相差两年,就让结果先累加36
阅读全文