//只用一行核心代码就可以过的天坑题目............= =

题目:

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

哎~不多说了,代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{double n,p;while(cin>>n>>p){cout<<pow(p,1/n)<<endl;}return 0;
}

正解:二分+高精
代码:
 1 #include <stdio.h>
 2 #include <string.h>
 3
 4 // 交换字符串函数
 5 void swap_str(char str[]) {
 6     int len = strlen(str);
 7     for (int i=0; i<len/2; i++) {
 8         int tmp = str[i];
 9         str[i] = str[len-i-1];
10         str[len-i-1] = tmp;
11     }
12 }
13
14 // 大数与整型相乘函数(大数以字符串形式给出)
15 void my_mul(char str[], int x) {
16     int len = strlen(str);
17     int cp = 0, i, tmp;
18     swap_str(str);
19     for (i=0; i<len; i++) {
20         tmp = (str[i]-'0')*x + cp;
21         str[i] = (tmp%10) + '0';
22         cp = tmp / 10;
23     }
24     while (cp) {
25         str[i++] = (cp%10) + '0';
26         cp /= 10;
27     }
28     while ('0'==str[i-1] && i>1)
29         i--;
30     str[i] = '\0';
31     swap_str(str);
32 }
33 // 比较两个大数的大小(大数前没有0)
34 int my_numCmp(char str1[], char str2[]) {
35     int len1, len2;
36     len1 = strlen(str1);
37     len2 = strlen(str2);
38     if (len1 > len2)
39         return 1;
40     if (len1 < len2)
41         return -1;
42     return strcmp(str1, str2);
43 }
44
45 // 字符串存储开方结果
46 void my_pow(char str[], int k, int n) {
47     str[0] = '1', str[1] = '\0';
48     while (n--) {
49         my_mul(str, k);
50     }
51 }
52
53 // 二分查找正确答案
54 int my_binary_search(int n, char str[]) {
55     int high = 1e9, low = 0;
56     int mid;
57     char tot[2005];
58
59     while (low < high) {
60         mid = low + (high-low)/2;
61         my_pow(tot, mid, n);
62         int tmp = my_numCmp(tot, str);
63         if (0 == tmp)
64             return mid;
65         if (tmp < 0)
66             low = mid + 1;
67         else
68             high = mid;
69     }
70     return mid;
71 }
72
73 int main() {
74     char str[105];
75     int n;
76     while (scanf("%d%s", &n, str) != EOF) {
77         printf("%d\n", my_binary_search(n, str));
78     }
79     return 0;
80 }

代码来源:http://blog.csdn.net/zcube/article/details/8545523

转载于:https://www.cnblogs.com/teilawll/p/3204786.html

Power of Cryptography相关推荐

  1. poj 2109 Power of Cryptography

    Power of Cryptography Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 18408   Accepted: ...

  2. 113 - Power of Cryptography 浮点数 pow()函数

    uva oj 上的一题. 113 - Power of Cryptography 就是给个 n 1<=n<=200 和 p 1<=p<10^101求个 k 1<=k< ...

  3. POJ2109 Power of Cryptography

    POJ2109 Power of Cryptography 贪心神题 题意 题解 提交代码 错误解法(不知道错在哪里) 错误代码 题意 这题是一个贪心神(经病)题. 众所周知,如果有x^n=p,那么如 ...

  4. poj2109 Power of Cryptography(数学题)

    题目链接:http://poj.org/problem? id=2109 --------------------------------------------------------------- ...

  5. poj2109 Power of Cryptography

    2017-10-6 解答 不知道为什么float就compile error了,关于浮点数... 代码 #include <iostream> #include <cmath> ...

  6. NKU 专题一 题解

    A - Flip Game 总的情况数只有2^16次方种,显然直接bfs就可以了 1 #include<iostream> 2 #include<queue> 3 #inclu ...

  7. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  8. AOAPC I: Beginning Algorithm Contests 题解

    AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...

  9. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

最新文章

  1. 600页!分享珍藏很久的《推荐系统学习手册》(附链接)
  2. referenced from 异常
  3. linux内核网络协议栈--数据包的接收流程(二十三)
  4. 系统设计说明书案例_案例 | 太阳能+热泵枸杞烘干系统设计及经济性分析
  5. JVM系列之:Contend注解和false-sharing
  6. Allegro padstack
  7. python计算入门_Python入门教程02-01(计算机核心基础)
  8. 简明易懂的call apply
  9. mysql utf-8长度_MySQL VARCHAR长度和UTF-8?mysql
  10. sql etl_使用SQL TRY函数进行ETL优化
  11. scala构造器的介绍
  12. php 截取字符串的方法,php截取字符串方法有哪些
  13. 三维地图下载,3D地图下载,谷歌地球三维地形图查看
  14. Windows安全机制---数据执行保护:DEP机制
  15. 移动修改服务器密码是什么,移动服务器密码
  16. 小米手机开机自启动软件及定时开关机
  17. 全面云化的变革悄然而至,IPLOOK助力加速云网融合
  18. 【深度好文】python加速库cython简介
  19. 【Linux】Linux 开放端口
  20. 读书笔记软件调试之道 :问题的核心-诊断

热门文章

  1. 增强现实(Augmented Reality)浅谈
  2. 图像拼接 SIFT资料合集
  3. editor does not contain a main type 错误解决方
  4. 支持向量机(理论+opencv实现)
  5. 谁说程序员干到 35 岁就不行了?
  6. 生活中的一些感悟与记录
  7. zigbee协议栈学习(二)
  8. li浮动时ul自适应高度方法
  9. php stream 函数集
  10. 从C语言学习谈编程之路