-1

Project Eulerの56番目の問題を解決しようとしていますが、 BigIntegerLibraryを使用しているときに問題が発生します。コードは次のとおりです。

#include <iostream>
#include "BigInteger.hh"
#include <cmath>
using namespace std;

int digitSum(BigInteger x){
int num[(int)floor(log10(x))+2];
int n = 0;
BigInteger sum = 0;

while (x != 0){
    sum += x - floor(x/10) * 10;
    x = floor(x/10);
    n++;
}

return sum.toInt();
}


int main(int argc, const char * argv[])
{

int max = 0;

for (int i = 1; i <= 100; i++){
    for (int j = 1; j <= 100; j++){
        cout << "i = %i, j = %i ",i,j;
        if (digitSum(pow(i,j)) < max)
            max = digitSum(pow(i,j));

    }

    }

cout << digitSum(pow(2,63));


return 0;
}

問題は、ビルドしようとすると、コンパイラが、、、および関数を使用している行で、使用されているが定義されていないというエラーを表示するlog10ことfloorですpow。この行にコメントすると#include "BigInteger.hh"、すべてうまくいきますが、今回はもちろん、BigIntegerライブラリを使用できません。

なぜそのような問題があるのですか?それを解決する方法は?

4

1 に答える 1

0

それはコンパイラまたはリンカーの問題ですか?後者の場合は、コマンドラインに-lmを追加して、数学ライブラリをリンクしてみてください。ここでGNUgccを想定しています。

于 2013-02-05T20:19:29.577 に答える