Kattis之旅——Inverse Factorial

时间:2022-08-14 21:53:18

Kattis之旅——Inverse Factorial

Kattis之旅——Inverse Factorial

题目意思就是已知n的阶乘,求n。

当输入的阶乘小于10位数的时候,我们可以用long long将字符串转化成数字,直接计算。

而当输入的阶乘很大的时候,我们就可以利用位数去大概的估计n。

 //Asimple
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, num, res, ans, len;string str;
void input() {
cin >> str;
len = str.size();
if( len < ) {
ll i = ;
ll ans = ;
while( true ) {
ans *= i;
if( ans == atoi(str.c_str()) ) {
cout << i;
break;
}
i ++;
}
} else {
ll i = ;
double ans = ;
while( true ) {
ans += log10(i);
if( floor(ans)==len ) {
cout << i;
break;
}
i ++;
}
}
} int main(){
input();
return ;
}