出题人题解|超市购物
2024-11-25 03:55:42
发布于:浙江
61阅读
0回复
0点赞
题目大意
买了 种菜,每个菜的重量分别为 (单位: KG),需要将菜分割后装到一定数量的口袋中,每个口袋可以装的重量上限是 KG,只有在一个口袋装满的情况下,超市才会提供一个新的口袋,求最后一个使用的口袋所装物品的重量。
题意分析
将买的 种菜装到口袋中,每个口袋都会装满,求最后一个使用的口袋所装物品的重量,最后一个口袋可能正好装满。
解题思路
最后一个口袋有两种情况:
- 正好装满
- 没装满
只需要用菜品重量总和对口袋称重上限求余。如果余数为 ,说明正好装满,输出 ,否则输出余数即可。
由于菜品重量之和可能超于 long long 范围,所以不能直接求和,根据余数的性质依次求即可。
余数的性质
时间复杂度解析
本题执行时间不受输入影响,因此时间复杂度为
代码演示
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
long long x, a, b, c, d, e;
cin >> x >> a >> b >> c >> d >> e;
long long res = 0;
res = a % x;
res = (res + (b % x)) % x;
res = (res + (c % x)) % x;
res = (res + (d % x)) % x;
res = (res + (e % x)) % x;
if(res == 0) cout << x << endl;
else cout << res << endl;
return 0;
}
全部评论 1
#include <bits/stdc++.h> using namespace std; using std::cout; using std::cin; typedef long long ll; ull x,a,res = 0; void solve() { cin >> x; for(int i = 1; i <= 5; i++) { cin >> a; res = (res + (a % x)) % x; } if(res == 0) cout << x; else cout << res; return ; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int T = 1; while(T--) { solve(); } return 0; }
2024-11-25 来自 青海
0
有帮助,赞一个