bzoj2656 数列 高精度&递推

这篇博客探讨了一种处理数列的方法,通过分析一对数(x, x+1)的关系,将问题简化为(x/2, x/2+1)。博主指出,当x为偶数和奇数时有不同的递推公式,并且所有数对最终会归结到(1, 2)。解决方案的时间复杂度为O(logN),并提供了AC代码,特别提醒注意多组数据的清零处理以及n=0的情况。" 78514194,7325856,C++实现多项式乘法,"['C++编程', '算法', '数据结构']
摘要由CSDN通过智能技术生成

       原来想hash的,后来发现没有这么复杂。

       我们不妨考虑一对数(x,x+1),那么它的结果可以由(x/2,x/2+1)的结果得到,这里的/与c++里的一样表示整除,后面也是如此。有两种情况:

       1.x=2u,x+1=2u+1,则Ax=Ax/2,A(x+1)=Ax/2+A(x/2+1);

       2.x=2u+1,x+1=2u+2,则Ax=Ax/2+A(x/2+1),Ax+1=A(x/2+1);

      然后所有的数对最终会变为(1,2),且复杂度为O(logN)。结果即(n,n+1)的前一项。注意多组数据清零,以及n=0时特判(其实不特判也不是不可以)。

AC代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

struct hgnum{ int p[505]; }s,x,y; ch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值