Codeforces Round 948 (Div. 2) A - C题_哔哩哔哩_bilibili
讲解都在视频里哦
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int n, m;
cin >> n >> m;
if ((n - m) >= 0 && (n - m) % 2 == 0)
cout << "YES\n";
else
cout << "NO\n";
}
}
#include <bits/stdc++.h>
using namespace std;
#define int long long
int upperLimit[33];
int square[33];
void init()
{
int dig = 0;
for (int i = 0; i < 32; i++)
{
if (dig == 0)
dig = 1;
else
dig *= 2;
square[i] = dig;
int index = i;
while (index >= 0)
upperLimit[i] += square[index], index -= 2;
}
}
int find(int x)
{
int dig = 0;
for (int i = 0; i < 32; i++)
{
if (dig == 0)
dig = 1;
else
dig *= 2;
if (dig * 2 > x)
return i;
}
return -1;
}
signed main()
{
init();
int T;
cin >> T;
while (T--)
{
int x, operation = 1, maxLength = INT_MIN;
cin >> x;
vector<int> ans(33, 0);
while (x > 0)
{
int index = find(x);
if (x > upperLimit[index])
{
index++;
x = square[index] - x;
maxLength = max(maxLength, index + 1);
ans[index] = operation;
operation = operation == 1 ? -1 : 1;
}
else
{
x -= square[index];
maxLength = max(maxLength, index + 1);
ans[index] = operation;
}
}
cout << maxLength << endl;
for (int i = 0; i < maxLength; i++)
cout << ans[i] << ' ';
cout << endl;
}
}
#include <bits/stdc++.h>
using namespace std;
#define int long long
inline int LCM(int a, int b)
{
return a * b / __gcd(a, b);
}
int calculate(int lcm, vector<int> &a)
{
int realLCM = 1, ans = 0;
for (auto &i : a)
{
if (lcm % i == 0)
ans++, realLCM = LCM(realLCM, i);
}
if (realLCM != lcm)
return 0;
return ans;
}
signed main()
{
int T;
cin >> T;
while (T--)
{
int n, maxNum = INT_MIN, flag = false;
cin >> n;
vector<int> a(n);
set<int> S;
for (auto &i : a)
cin >> i, maxNum = max(maxNum, i), S.insert(i);
for (auto &i : a)
if (maxNum % i != 0)
{
cout << n << endl, flag = true;
break;
}
if (!flag)
{
int ans = 0;
for (int i = 2; i <= sqrt(maxNum); i++)
{
if (maxNum % i != 0)
continue;
int divisor = i, divisor2 = maxNum / divisor;
if (!S.count(divisor))
ans = max(ans, calculate(divisor, a));
if (!S.count(divisor2))
ans = max(ans, calculate(divisor2, a));
}
cout << ans << endl;
}
}
}