2^1000 の桁の和を求める
関数を使用して、ユーザーは 4^5 (基数 4、指数 5) などの基数と指数を入力します。
値とベクトルで出力された数字を比較すると、16 番目から失敗します。
私の試み:
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
double Integer() {
double m,o;
double n;
cout<<"Enter Base: ";
cin>>m;
cout<<"Enter Exponent: ";
cin>>o;
n= pow(m,o);
cout.precision(302);
cout << "The Answer is: " << n << endl;
return n;
}
void SumoftheDigits(double n) {
double x, q, w=0, r, d;
int length = r = (log(n)/ log(10)) + 1;
vector<double> v1;
modf((n/pow(10,r)),&x);
while (r != 0) {
q = modf( (n/pow(10,r-1)), &x);
n -= x*pow(10,r-1);
r--;
d = x;
v1.push_back(d);
}
for(vector<double>::iterator it = v1.begin(); it != v1.end(); ++it){
cout << *it << " ";
}
cout << endl;
int i;
long long int Sum = 0;
while (i != v1.size()) {
Sum += v1[i];
i++;
}
cout << "The Sum of the Digits is: " << Sum << endl;
}
int main() {
double n = Integer();
SumoftheDigits(n);
return 0;
}