n^n (1 ≤ n ≤ 10^9) の値を処理する最適化された方法
使用long long int
しましたが、値が(1000 ^ 1000)になる可能性があるため、十分ではありません
GMP library
http://gmplib.org/を検索して見つけましたが、BigInt class
それらを使用したくありません。これを処理するための数値的な方法を探しています。
の最初と最後のk (1 ≤ k ≤ 9) 桁を出力する必要がありますn^n
最初のk桁については、以下に示すように取得しています(これは少し醜い方法です)
num = pow(n,n);
while(num){
arr[i++] = num%10;
num /= 10;
digit++;
}
while(digit > 0){
j=digit;
j--;
if(count<k){
printf("%lld",arr[j]);
count++;
}
digit--;
}
最後のk桁はnum % 10^k
以下のように使用しています。
findk=pow(10,k);
lastDigits = num % findk;
enter code here
k の最大値は 9 です。したがって、最大で 18 桁しか必要ありません。完全な n^n 式を実際に解かずに、これらの 18 桁を取得することを考えています。
任意のアイデア/提案??