J - Perfect Pth Powers 문제 해결 보고서(장우)

J - Perfect Pth Powers
Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u
Submit 
Status 
Practice 
POJ 1730
Description
We say that x is a perfect square if, for some integer b, x = b
2. Similarly, x is a perfect cube if, for some integer b, x = b
3. More generally, x is a perfect pth power if, for some integer b, x = b
p. Given an integer x you are to determine the largest p such that x is a perfect p
th power.
Input
Each test case is given by a line of input containing x. The value of x will have magnitude at least 2 and be within the range of a (32-bit) int in C, C++, and Java. A line containing 0 follows the last test case.
Output
For each test case, output a line giving the largest integer p such that x is a perfect p
th power.
Sample Input
17
1073741824
25
0

Sample Output
1
30
2

제목: 0이면 끝나는 x 수를 입력합니다.그렇지 않으면 우리는 이 수의 x가 반드시 상응하는 a, b가 존재하고 x는 a의 b차방이라는 것을 안다.이런 a, b는 적어도 한 쌍이 있다.네가 해야 할 일은 가장 큰 b를 구하는 것이다.
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	long long n;     //int ...
	while(scanf("%lld",&n)!=EOF)
	{
		if(n==0) break;
		long long  m;
		int i;
		int ans=1;
		if(n<0)       //n 
		{	m=-n;i=3;}    // 
		else
		{	m=n;i=2;}
		double eps=1e-12;   // , 
		double p;
		for(;i<=32;)
		{
			p=pow(m*1.0,1.0/i);    //pow(int,int) .... float
			if(fabs(int(p+eps)-p)<eps)    //x a b ,b ,a .
				ans=i;
			if(n<0)
				i+=2;     // 
			else
				i++;  
		}
		printf("%d
",ans); } return 0; }

좋은 웹페이지 즐겨찾기