[牛顿法 || 二分] BZOJ 1213 [HNOI2004]高精度开根 & 51Nod 1166 大数开平方

可以看贴吧的讨论:http://tieba.baidu.com/p/2873435742


牛顿法 %%%hqztrue


<span style="font-family:Microsoft YaHei;font-size:14px;color:#000066;">import sys
m=int(input())
n=int(input())
if n==0:
	print 0
	sys.exit()
_n=n;len=0
while _n>0:
	_n/=10;len+=1
base=300
wei=len/m
now=len%m
while (now+m<=base)and(wei>0):
	now+=m;wei-=1
div=1
for i in range(wei*m):div*=10
_n=n/div
_f=float(_n)**(1.0/m)
x=int(_f)
for i in range(wei):x*=10
while True:
	_x=x
	x=x+x*(n-x**m)/(n*m)
	if x==_x:break
while (x+1)**m<=n:
	x=x+1
print x

</span>

二分也很兹瓷啊


<span style="font-family:Microsoft YaHei;font-size:14px;color:#000066;">m,n=input(),input()
l,r=0,1
while r**m<=n:
    l=r
    r=r*2
while l<r:
    mid=(l+r+1)//2
    if mid**m<=n:
        l=mid
    else:
        r=mid-1
print l
</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值