分类: Q&A

Some good questions’answer

88 篇文章

ABC的整除问题
原题链接 描述: 给定三个非负整数 $A,B,C$,且保证 $A\le B,C\ne 0$,求在区间 $[A, B]$ 中,存在多少个整数可以被 $C$ 整除? 输入格式: 第一行,一个整数 $T$,代表 $T$ 个测试样例。 接下来 $T$ 行,每行给出三个非负整数 $A,B,C$。 输出格式: …
最小正整数
Original Link 思想: 最大公约数和最小公倍数。 要求构造出的数末尾包含 $k$ 个 $0$,且可以被 $n$ 整除的最小整数; 则构造出的数必然也可以被 $10^k$ 整除,满足同时被 $n$ 和 $10^k$ 整除, 显然,该数为 $n$ 和 $10^k$ 的最小公倍数时即可满足条件…
寻找变化前的01序列
Original Link 思想: 模拟 用 res 记录出现的连续的 $1$ 的个数: 若出现 s[i] == '0' 则将其置零。 若 res == 5 则不输出任何内容。 其他情况下直接输出 s[i] 代码: #include <bits/stdc++.h> u…
青蛙跳
Origional Link 思想: 思维。 青蛙一共跳了 k 次,则: 当 k 为奇数时,向右边跳了 k / 2 + 1 次,向左边跳了 k / 2 次。 当 k 为偶数时,向右边跳了 k / 2 次,向左边跳了 k / 2 次。 代码: #include <bits/stdc++.h>…
最短距离
Original Link 思想: 前缀和。 由于出口为环状,故将数组首尾相连。 构造前缀和数组,即可得到在任意出口顺时针方向或逆时针向走到对应出口的距离之和。 对于每次询问,输出顺时针和逆时针方向上,两个出口最短的距离即可。 代码: #include <bits/stdc++.h> u…
金币
Original Link 思想: 模拟。 根据题意,设置变量 cnt 和 day 分别代表当天能收到的金币数和收到 cnt 金币的天数。 循环枚举第 i 天,每次循环: 若当天 cnt == day 说明金币需要增加 cnt ++,且要重置 day = 0。 总共收到的金币 sum += cnt;…
剪绳子
Original Link 思想: 二分。 绳子最长为 1e9。 考虑二分: 若当前绳长满足要求,则说明还有可能取更长的绳长; 若当前绳长不满足要求,则说明当前绳长不可能是最终答案; 由于绳子长度保留两位小数,则当二分的边界取到两者差值不超过 eps = 1e-4 即可。 利用 a[N] 存储绳长数…
圆形牛棚
Original Link 思想: 前缀和。 由于牛棚为环状,故将数组首尾相连。 利用 sum 记录牛牛们需要走的距离,前缀和记录 a[i] 扇门 i ~ n 的距离。 从连接后的数组开始,即 i = n ~ 2 * n 开始遍历,sum 减去后一个房间牛牛走过的距离,再加上该房间牛牛走到 i + …
比例简化
Original Link 思想1: 暴力枚举。 枚举分子 i 和分母 j,利用 eps 作为差值的最小值来判断更新条件。 代码: #include <bits/stdc++.h> using namespace std; void solve(){ double a, b; int L…
最长算术
Original Link 思想: 双指针。 快指针 i 作为某一连续区间的右端点,慢指针 j 作为该区间的左端点; 初始化设差值为 t = a[1] - a[0],每当 a[i] - a[i - 1] == t 时更新区间, 更新区间时,i 不断右移,直到不满足 a[i] - a[i - 1] =…