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ライブラリを使用できません。
なぜそのような問題があるのですか?それを解決する方法は?