lsmCC 发表于 2024-2-18 22:03:32

为什么会没有输出

#include <iostream>
#include <vector>

using namespace std;
typedef long long ll;
vector<ll> a, b;
int n, m;

int mod(vector<ll>& a, int n){
    b.resize(n); // 调整b的大小与a相同
    ll sum = 1;
    for(int i = 0; i < n; i++){
      b = a % m;
    }
    for(int i = 0; i < n; i++){
      sum *= b;
    }
    return sum % m;
}

int main(){
    int n, m;
    cin >> n >> m;
    a.resize(n);
    for(int i = 0; i < n; i++) cin >> a;
    cout << mod(a, n) << endl;
   
    return 0;
}
输入:
4 6
1 2 3 4
结果没有输出

FishC 发表于 2024-2-18 22:03:59

这段代码没有输出的原因是在主函数中cin了m的值,但是在mod函数中使用的却是全局变量m。由于全局变量m没有赋值,所以导致b的大小没有调整为正确的值。另外,在mod函数的第一个for循环中,应该是b[ i] = a % 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 = a % m;
    }
    for(int i = 0; i < n; i++){
      sum *= b;
    }
    return sum % m;
}

int main(){
    cin >> n >> m;
    a.resize(n);
    for(int i = 0; i < n; i++) cin >> a;
    cout << mod(a, n, m) << endl;
    return 0;
}

修正后的代码中,将mod函数的参数列表修改为传递a、n和m三个参数,并在调用时传入正确的值。修正后,代码可以正常输出结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

学习编程中的Ben 发表于 2024-2-18 23:06:57

#include <iostream>
#include <vector>

using namespace std;
typedef long long ll;
vector<ll> a, b;
int n, m;

int mod(vector<ll>& a, int n){
    b.resize(n); // 调整b的大小与a相同
    ll sum = 1;
    for(int i = 0; i < n; i++){
      b = a % m;
    }
    for(int i = 0; i < n; i++){
      sum *= b;
    }
    return sum % m;
}

int main(){
    cin >> n >> m;
    a.resize(n);
    for(int i = 0; i < n; i++) cin >> a;
    cout << mod(a, n) << endl;
   
    return 0;
}


给个最佳答案吧!!!

学习编程中的Ben 发表于 2024-2-19 14:27:16

跪求最佳
页: [1]
查看完整版本: 为什么会没有输出