c的中文余数定理,错误是什么?怎么修改?

时间:2019-05-12 18:12:16

标签: c++ modulo chinese-remainder-theorem

目前正在做作业。我真的是C ++的新手,所以我对此并不了解。

我应该为中国余数定理编写代码,但是我的代码给出了错误,并且我不确定是什么问题。

问题是为此编写代码:

int main(){
   cout<<crt(Mod(23,110),Mod(10,63))<<endl;
   return 0;
}

错误:5

6 6 [错误]请求'num'中的成员'push_back',它是非类类型'int *'

我做了什么:

#include <iostream>
#include <list>
using namespace std;

int crt(int num[], int rem[], int num_[], int rem_[])
{
    num.push_back(num_[0]);
    rem.push_back(rem_[0]);
    int k = sizeof(num) / sizeof(num[0]);
    int x = 1;
    while (true) {
        for (int j = 0; j < k; j++)
            if (x % num[j] != rem[j])
                break;
        if (j == k)
            return x;
        x++
    }
    return x;
}

int Mod(int a, int n)
{
    num[] = { a };
    rem[] = { n };
    return num, rem;
}

int main()
{
    cout << crt(Mod(23, 110), Mod(10, 63)) << endl;
    return 0;
}

1 个答案:

答案 0 :(得分:1)

int crt(int num[]; int rem[]; int num_[];int rem_[])

您需要逗号;不是分号。