深圳市国外网站建设,简单html5网页设计,港巢网站建设,seo综合查询系统正题 题目大意
定义函数 f(x){x−1(x%21)x/2(x%20)f(x)\left\{\begin{matrix} amp;x-1(x\%21)\\ amp; x/2(x\%20) \end{matrix}\right.f(x){x−1(x%21)x/2(x%20) 一次变化是将xf(x)xf(x)xf(x) 求A∼BA\sim BA∼B之间有多少个数可以变化到kkk 解题思路
其实就是…正题 题目大意
定义函数 f(x){x−1(x%21)x/2(x%20)f(x)\left\{\begin{matrix} amp;x-1(x\%21)\\ amp; x/2(x\%20) \end{matrix}\right.f(x){x−1(x%21)x/2(x%20) 一次变化是将xf(x)xf(x)xf(x) 求A∼BA\sim BA∼B之间有多少个数可以变化到kkk 解题思路
其实就是f(x)⌊x/2⌋f(x)\lfloor x/2 \rfloorf(x)⌊x/2⌋ 计算1∼B1\sim B1∼B减去1∼A−11\sim A-11∼A−1的 然后考虑倒推若x≤Rx\leq Rx≤R ⌊2nkx2n⌋k\lfloor \frac{2^nkx}{2^n} \rfloork⌊2n2nkx⌋k ⌊kx2n⌋k\lfloor k\frac{x}{2^n} \rfloork⌊k2nx⌋k 因为kkk为整数直接调出 k⌊x2n⌋kk\lfloor \frac{x}{2^n} \rfloorkk⌊2nx⌋k ⌊x2n⌋0\lfloor \frac{x}{2^n} \rfloor0⌊2nx⌋0 那么当xlt;2nxlt;2^nx2n且2nkx≤R2^nkx\leq R2nkx≤R 枚举nnn那么xxx的可取个数2n2^n2n 当kkk为偶数时有可能是由k1k1k1变来的需要特判。 codecodecode
#includecstdio
#define ll long long
using namespace std;
ll k,a,b,ans;
ll get_ans(ll x)
{if(k1) return x;ll z1,ans0;while(z*kx){ansz;if(z*kz-1x) ans-z*kz-1-x;z*2;}return ans;
}
int main()
{scanf(%lld%lld%lld,k,a,b);ansget_ans(b)-get_ans(a-1);if(k!(k1)) k,ansget_ans(b)-get_ans(a-1);printf(%lld,ans);
}