B. Shohag Loves Strings
注意到两个相同字母 aa
的 \(f(p)\) 为偶数,所以如果找到两个相邻相同字母输出即可。如果没有相邻相同的两个字母,则说明字符串相邻的字母一定不同,再考察三个相邻的字母的情况,发现三个字母均不同,如 abc
时 \(f(p)\) 也为偶数,又找到一种合法的情况。那么剩下的情况(既没有 aa
又没有 abc
)只有形如 abababa...
的结构了,不管多长都是无解(手工模拟可以发现每多一对 ab
\(f(p)\) 加 \(2\),不改变奇偶性)。
string s; cin >> s;
int n = s.size();
if (n == 1) return cout << "-1\n", void(0);
rep(i, 0, n - 2)
if (s[i] == s[i + 1]) return cout << s[i] << s[i + 1] << '\n', void(0);
if (n == 2) return cout << "-1\n", void(0);
rep(i, 0, n - 3)
if (s[i] != s[i + 1] && s[i + 1] != s[i + 2] && s[i] != s[i + 2])
return cout << s[i] << s[i + 1] << s[i + 2] << '\n', void(0);
cout << "-1\n";
C1. Shohag Loves XOR (Easy Version)
注意到 \(y>2x\) 的时候,\(x\oplus y\) 的值有一个 \(x\) 消不去的高位 1,所以不可能是 \(x,y\) 的因数。因此只需要考虑 \(y\le 2x\) 的情况,可以直接从 \(1\) 到 \(\min(m, 2x)\) 枚举 \(y\)。
LL x, m, ans = 0;
cin >> x >> m;
rep(y, 1, min(2 * x, m))
if (x != y && ((x % (x ^ y) == 0) || (y % (x ^ y) == 0))) ans++;
cout << ans << '\n';
标签:aa,cout,题解,字母,2x,CF2093,相邻
From: https://www.cnblogs.com/th19/p/18568725