时间限制:1000ms
内存限制:65535KB
题目描述:输入正整数N,判断它是否可以表示为A的B次方,其中B>1,A>0,都是 整数。输出YES或者NO。
输入格式:输入正整数N
输出格式:输出YES或者NO
输入样例:6
输出样例:NO
参考程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
typedef long long ll;
ll pw(ll A,ll X){
ll ret=1;
while(X){
if(X&1){
ret*=A;
}
A*=A;X>>=1;
}
return ret;
}
ll n;
inline void init(){
scanf("%lld",&n);
if(n==1){
puts("YES");
}
for(int i=2;i*i<=n;++i){
for(int j=2;pw(i,j)<=n;++j){
if(pw(i,j)==n){
puts("YES");
return;
}
}
}
puts("NO");
return;
}
int main(){
init();
return 0;
}
题目来源:码蹄集
https://matiji.net/exam/brushquestion/174/778/B3FCFEC101BD05189BB74D522E019504