oj显示答案错误
时间: 2024-02-15 20:01:39 浏览: 24
可能是由于计算精度问题导致的。可以将除法操作改为整除操作,即`count = min(nums[i], n / values[i])`改为`count = min(nums[i], n / values[i])`,同时将所有的`int`类型改为`long long`类型,这样可以避免整数溢出。
下面是修改后的C++代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
long long n;
cin >> n;
vector<long long> nums(7);
for (int i = 0; i < 7; i++) {
cin >> nums[i];
}
vector<long long> values = {1, 2, 5, 10, 20, 50, 100};
vector<long long> used(7);
for (int i = values.size() - 1; i >= 0; i--) {
long long count = min(nums[i], n / values[i]);
used[i] = count;
n -= count * values[i];
}
if (n != 0) {
cout << "xuewei,ni zhe chou diaosi" << endl;
} else {
long long ans = 0;
for (int i = 0; i < 7; i++) {
ans += used[i];
}
cout << ans << endl;
}
}
return 0;
}
```
需要注意的是,在输入`n`和`nums`时,要使用`long long`类型来读取,否则会出现精度错误。