1 条题解
-
0
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e6, mod = 1e9+7, inf = 1e18 + 5; void solve() { int n,m,k; cin >> n >> k >> m; int s = n / k; // k的倍数的个数 int les = n - s; // 不是k的倍数的个数 int ans = 0; if(m <= les){ // 若可以改变的个数m <= 非k的倍数的个数 ans += m; // 将 m 个 非k倍数的数 改为k, 对答案贡献 + m ans += (s + 1) / 2; // 原本是k的倍数的数,相邻两个数对贡献 + 1 //(s+1) / 2 : (s+1) } else{ // 可以改变的个数m > 非k的倍数的个数 ans += les; // 将非k的倍数的数全变为k,对答案贡献 + les m -= les; // 还能改变的个数 m = m - les s -= m; // k的倍数的个数有s个,将改变其中的m个变成k ans += m; // 贡献 + m ans += (s+1)/2; // 相邻两个数对贡献 + 1 } cout << ans << endl; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T = 1; cin >> T; while (T--) solve(); return 0; }
- 1
信息
- ID
- 1192
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 49
- 已通过
- 16
- 上传者