Y Y YY YY
题目大意
给出一个超大正整数S,S的位数小于500000,然后找出一个数 n, 使得n为正整数,且N^N=S。
样例输入
387420489
样例输出
9
思路
这道题用数论来做。
我们可以利用换底公式求出NN的位数,然后判断是不是。是就输出并退出,否则继续搜。
代码
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
string a;
int main()
{
//freopen("yy.in","r",stdin);
//freopen("yy.out","w",stdout);
cin>>a;//读入
for (int i=1;i<=a.length();i++)
if (floor(i*log10(i)+1)==a.length())//换底公式
{
printf("%d",i);//输出
break;//退出
}
//fclose(stdin);
//fclose(stdout);
return 0;
}