POJ 2109 Power of Cryptography(내 수제의 길--k^n=p)
Time Limit: 1000MS
Memory Limit: 30000K
Total Submissions: 12137
Accepted: 6206
Description
Current work in cryptography involves (among other things) large prime numbers and computing powers of numbers among these primes. Work in this area has resulted in the practical use of results from number theory and other branches of mathematics once considered to be only of theoretical interest.
This problem involves the efficient computation of integer roots of numbers.
Given an integer n>=1 and an integer p>= 1 you have to write a program that determines the n th positive root of p. In this problem, given such integers n and p, p will always be of the form k to the n
th. power, for an integer k (this integer is what your program must find).
Input
The input consists of a sequence of integer pairs n and p with each integer on a line by itself. For all such pairs 1<=n<= 200, 1<=p<10
101 and there exists an integer k, 1<=k<=10
9 such that k
n = p.
Output
For each integer pair n and p the value k should be printed, i.e., the number k such that k n =p.
Sample Input
2 16
3 27
7 4357186184021382204544
Sample Output
4
3
1234
Source
México and Central America 2004
식자 k^n=p에 대해 문제에서 n과 p를 제시하고 k를 구한다.
이 문제는 처음에 생각한 것은 math의 함수 pow(m, n), 즉 m^n의 값을 구할 수 있다는 것이다.전에 그가 처방전을 써본 적이 있어서 생각났어요. 게다가 디스커스에 있는 힌트를 보고 바로 pow(m, 1/n)로 값을 구했어요. 그런데 이상하게도 WA가 여러 번 있었어요. 원인을 전혀 찾지 못해서 몇 명의 AC코드를 찾아서 붙여넣었어요. 계속 WA를 할 방법이 없을 것 같아요.POJ 관리자가 데이터를 강하게 바꿨다고 의심스러워요.그 후로는 이분법으로 값을 구할 방법이 없었다.
코드(2분법 1AC):
#include <cstdio>
#include <cstdlib>
#include <cmath>
int main(void){
double n, m;
long long left, right, mid;
while(scanf("%lf%lf",&n,&m)!=EOF){
left = 0;
right = 1000000002;
while (right - 0.00000001 > left){
mid = (left + right) / 2;
if (pow(mid, n) - m > 0){
right = mid;
}
else if (pow(mid, n) - m < 0){
left = mid;
}
else{
printf("%.0lld
", mid);
break;
}
}
}
return 0;
}
파워 함수로 된 코드도 붙여주세요. 멋있는 건 AC가 안 돼요.(1CE 4WA):
#include<stdio.h>
#include<math.h>
int main()
{
double n, m;
while(scanf("%lf%lf", &n, &m) != EOF)
printf("%.0lf
" ,pow(m, 1 / n));
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
B God Create Math 사고방식B.God Create Math There is a saying: computer was the crystallizationof men' intelligence, but math is fromgod. Today, ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.