文章
7
粉丝
387
获赞
7
访问
67.3k
开根基本上就是FFT乘法+快速幂+二分答案
但是本题确保存在一个正整数a使得a^n=m 即不需要向下取整的操作,所以需要和原本的二分思路有所转换
python代码如下,可以视作一个伪代码
n,m=input().split()
m=int(m)
l=len(n)//m
n=int(n)
x=10**l
a=x
y=10**(l+1)
while True:
b=n-a**m
if b>0:
x=a
a=(a+y)//2
elif b<0:
y=a
a=(a+x)//2
else:
break
print(a)
C++代码如下
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <numeric>
#include <limits>
#include <functional>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ull MODD = 998244353;
struct cd {
double re, im;
...
登录后发布评论
600行的代码,吓蒙了...