|
发表于 2024-2-18 22:03:59
|
显示全部楼层
这段代码没有输出的原因是在主函数中cin了m的值,但是在mod函数中使用的却是全局变量m。由于全局变量m没有赋值,所以导致b的大小没有调整为正确的值。另外,在mod函数的第一个for循环中,应该是b[ i] = a[i ] % m,而不是b = a % m。
下面是修正后的代码:
- #include <iostream>
- #include <vector>
- using namespace std;
- typedef long long ll;
- vector<int> a, b;
- int n, m;
- int mod(vector<int>& a, int n, int m){
- b.resize(n); // 调整b的大小与a相同
- ll sum = 1;
- for(int i = 0; i < n; i++){
- b[i] = a[i] % m;
- }
- for(int i = 0; i < n; i++){
- sum *= b[i];
- }
- return sum % m;
- }
- int main(){
- cin >> n >> m;
- a.resize(n);
- for(int i = 0; i < n; i++) cin >> a[i];
- cout << mod(a, n, m) << endl;
- return 0;
- }
复制代码
修正后的代码中,将mod函数的参数列表修改为传递a、n和m三个参数,并在调用时传入正确的值。修正后,代码可以正常输出结果。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|