簡體   English   中英

編譯錯誤C ++

[英]Compilation Error C++

不知道為什么我會得到編譯錯誤

prog.cpp: In function 'long long int modInverse(long long int, long long int)':
prog.cpp:46: error: 'extendedEuclid' was not declared in this scope

#include<stdio.h>
#include<utility>
#include<algorithm>
using namespace std;
#define MOD 1000000007
#define LL long long
LL factorial[2000005];
LL pow(LL a, LL b, LL mod) {
    LL x = 1, y = a;
    while(b > 0) {
        if(b%2 == 1) {
            x=(x*y);
            if(x>mod) x%=mod;
        }
        y = (y*y);
        if(y>mod) y%=mod;
            b /= 2;
    }
    return x;
}


LL modInverse(LL a, LL m) {
    return (extendedEuclid(a,m).second.first + m) % m;
}



pair<LL, pair<LL, LL> > extendedEuclid(LL a, LL b) {
    if(a == 0) return make_pair(b, make_pair(0, 1));
    pair<LL, pair<LL, LL> > p;
    p = extendedEuclid(b % a, a);
    return make_pair(p.first, make_pair(p.second.second - p.second.first*(b/a), p.second.first));
}


int main()
{

int t,a,b,n,i;
factorial[1]=1;
for (i=2;i<=2000001;i++)
    factorial[i]=(factorial[i-1]*i)%(MOD-1);
scanf("%d",&t);
while(t--)
{
    scanf("%d%d%d",&a,&b,&n);
    LL nCr=((factorial[2*n]%(MOD-1))*(modInverse(factorial[n],(MOD-1))))%(MOD-1);
    nCr=((nCr%(MOD-1))*(modInverse(factorial[n],(MOD-1))))%(MOD-1);
    LL nCr_pow_c=pow(nCr,b,MOD-1);
    LL a_pow_nCr_pow_c=pow(a,nCr_pow_c,MOD);
    printf("%lld\n",a_pow_nCr_pow_c);
}
return 0;
 }

也許是因為還沒有定義extendedEuclid嗎?

您必須在調用它之前添加其原型。

添加pair<LL, pair<LL, LL> > extendedEuclid(LL a, LL b); 在文件的頂部,它將起作用;)

放置函數聲明: pair<LL, pair<LL, LL> > extendedEuclid(LL , LL );

之前

LL modInverse(LL a, LL m) {
return (extendedEuclid(a,m).second.first + m) % m;
} 

您正在嘗試使用extendedEuclid ,使其首次出現。 要解決此問題,您可以在pair<LL, pair<LL, LL> > extendedEuclid(LL a, LL b)一個后移動modInverse函數。 或者,只需添加聲明pair<LL, pair<LL, LL> > extendedEuclid(LL a, LL b); 在文件的早期聲明中。

另外,我建議您遵循一本不錯的C ++教程或某種書籍,包括編碼風格。 您的代碼表明您已經養成一些不良習慣,這些不良習慣可能是由於學習混亂造成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM