【BZOJ2656】【Zjoi2012】数列(sequence) 水题,python水高精度

#include <stdio.h>
int main()
{
	puts("转载请注明出处");
	puts("地址:blog.csdn.net/vmurder/article/details/43636437");
}


题解:

发现我们可以保证同时至多出现两个数A和A+1。

然后记录这两个数的数目a、b。


每次向下>>时,

如果A是奇数,那么新的计数器就应该是a,a+b

如果A是偶数,那么新的计数器就应该是a+b,b


时间复杂度log级别


代码:

m=int(raw_input())
while m:
	m=m-1
	a=int(1)
	b=int(0)
	n=int(raw_input())
	while n:
		if n%2==1 : b=a+b
		else : a=a+b
		n=n/2
	
	print(b)




你可能感兴趣的:(python,高精度,BZOJ2656,数列sequence,Zjoi2012)