摘要: 首先是最大公约数,这有2种写法,一个是省事一点地递归写法: 原理其实很简单,就是模拟辗转相除法首先算法若a < b, 算法会转换一下a 和 b, 然后对他们取余数, 并用较小的数再次求余,直到余数为0, 最小的数就是最大公约数! 数学也可以用来推倒: nx % x == 0 时 x 为最大公约数。 阅读全文
posted @ 2019-01-19 17:41 mpeter 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 这一题题目有点坑,注意这句话: 这代表了其圆心就是矩形的中心! 然后就可以推公式: 可知: x = 200/(a+2atan(b/c)*r); r = sqrt(a*a + b*b); 所以有AC代码如下: #include <iostream> #include <cstdio> #include 阅读全文
posted @ 2019-01-19 17:15 mpeter 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目链接: https://cn.vjudge.net/problem/34398/origin 题目比较简单,就是水题,基础贪心,大于所需的即可: AC代码: 打表: #include <cmath> #include <iostream> #include <cstdio> #define ll 阅读全文
posted @ 2019-01-19 16:51 mpeter 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 题目链接: https://cn.vjudge.net/problem/23709/origin 本题其实有坑 数据大小太大, 2的32次方,故而一定是取巧的算法,暴力不可能过的 思路是最大公因数的倍数是最小公倍数,又有a <= b所以可以知道 a = gcd, b = lcm AC代码如下: #i 阅读全文
posted @ 2019-01-19 16:37 mpeter 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 题目链接: https://cn.vjudge.net/problem/34398/origin 本题的大意其实很简单,就是找回文串,大致的思路如下: 1. 确定一个回文串,这里用到了自定义的check函数原理如下: 传入le, ri两个值(定义从1开始), s+1 = aaadbccb. a a 阅读全文
posted @ 2019-01-19 16:12 mpeter 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 题目链接: https://vjudge.net/problem/1377985/origin 题目大意就是要你把一个数字拆开,然后相乘。 要求得数要小于9,否则递归下去。 这里用到一个递归函数: 这个函数用来求得一个数字最终得到的那个k值是多少。 然后开一个二元数组记录一下,并且用到了前缀和,统计 阅读全文
posted @ 2019-01-19 00:34 mpeter 阅读(141) 评论(0) 推荐(0) 编辑