Codeforces Round #268 (Div. 2)
题目链接
A:有的标记掉判断一下即可
B:枚举时间一个个去判断一下即可
C:构造一下,4和5分别手动构造,然后之后每次多2个数字就先相减掉得到1,然后乘上原数字不变,4以下的是绝对构造不出来的
D:贪心,先排序,然后每次twopointer选头尾两个判断能丢进哪个集合,都不行就找一个之前满足的丢进小集合
E:推理,详细见官方题解,大致是推出来后,[x, x + 1e18 - 1]这个区间,每次挪动一个变成[x + 1, x + 1e18],对应的总和就加1,那么只要能求出[1, 1e18]的值,然后在去挪动相应步数得到相应区间即可,计算1-1e18的和推推规律就可以发现了,官方题解上也有公式
代码:
A:
#include#include int n, p, q, vis[105];bool solve() { for (int i = 1; i
B:
#include#include const int N = 55;int p, q, l, r, ans;int vis[10005], c[N], d[N];bool judge(int t) { for (int i = 0; i
C:
#include#include #include #include using namespace std;int n;void solve(int n) { if (n % 2 == 0) { printf("1 + 2 = 3\n"); printf("3 + 3 = 6\n"); printf("6 * 4 = 24\n"); for (int i = 5; i
D:
#include#include #include