模拟赛连接
排名:\(\text{rank 1}\)
分数:\(100+100+100+100=400\)
集训期间第二次 AK!
T1:灭火 / fire
题目描述:
求出 \(n\) 个数 \(a_1,a_2,\dots,a_n\) 的和除以 \(m\) 向上取整的结果。(\(0<a_i,m<2^{63},0<n\le20\))
思路:
直接求和,然后向上取整即可,注意要用高精度,我用的是 __int128
(注意 __int128
的读入和输出都需要自行模拟)。
代码:
#include <bits/stdc++.h>
using namespace std;
long long n, m, w;
__int128 ans;
string s;
int main() {
freopen("fire.in", "r", stdin);
freopen("fire.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> w, ans += w;
}
ans = (ans + m - 1) / m;
for (; ans; ans /= 10) {
s += ans % 10 + '0';
}
reverse(s.begin(), s.end());
cout << s;
return 0;
}
T2:数学题 / math
题目描述:
从 \(n\) 个自然数中任意取出两个数 \(a\) 和 \(b\),保证这两个数满足 \(a \lt b\)。若存在一个自然数 \(c\)(\(c\) 不一定属于这 \(n\) 个自然数),能够使得 \(a-c=c-b\),那么将 \((a, b)\) 视为一组可行的数对。(\(0 \lt n \le 100000,0 \lt x \lt 2^{63}\))
思路:
将方程变一下:\(a+b=2c\),也就是 \(a,b\) 的和要是偶数才行。我们知道同奇偶的数相加为偶数,所以我们可以先把那 \(n\) 个自然数去重,然后记录剩下的数的奇偶性,如果剩下的奇数有 \(x\) 个,偶数有 \(y\) 个,那么wo
标签:总结,20230925,fire,自然数,lt,__,ans,100,模拟 From: https://www.cnblogs.com/lrx-blogs/p/20230925-contest-summary.html