python大法好 vijos1375 大整数

一个k(1<=k<=80)位的十进制正整数N,就是所谓的大整数.
请你设计程序,对于给出的某一个大整数N,找到满足p^3+p^2+3p<=n的p的最大值.

 

输入格式

输入数据只有一行,是一个K位的大整数N,行首行未无多余空格

输出格式

输出第一行为你所找到的P最大值,行首行末别乱加东西

样例1

样例输入1[复制]

 
1000000000000001000000000000003000000000000001

样例输出1[复制]

 
1000000000000000
def f(x):
    return x*x*x+x*x+3*x
num=int(input())
left=0;
right=num;
mid=0;
mark=0
while left<right:
    mid=int((left+right)/2)
    #print("midzhi ",mid)
    fx=f(mid)
    if fx==num:
        ans=mid
        mark=1
        break
    elif fx>num:
        right=mid 
    else:
        left=mid+1
if mark==0:
    ans=left-1
print(ans)

 

posted on 2016-03-26 20:13  Beserious  阅读(224)  评论(0编辑  收藏  举报