Description

小 Z 最近遇上了大麻烦,他的数学分析挂科了。于是他只好找数分老师求情。

善良的数分老师答应不挂他,但是要求小 Z 帮助他一起解决一个难题问题是这样的,现在有 n 个标号为 1~n 的球和 m 个盒子,每个球都可以放进且只能放进一个盒子里面,但是要满足如下的规则:

  1. 若把标号为 i 的球放进了第 j 个盒子,那么标号为 2*i 的球一定要在第 j+1 个盒子里面(若 j<m)
  2. 若把标号为 i 的球放进了第 j 个盒子,并且 k*2=i,那么标号为 k 的球一定要在第 j-1 个盒子里面(若 j>1)

小 Z 的数分老师想要知道,给定了 n 和 m 的时候,第一个盒子最多能放进去多少个球。事实上,他已经推算出了公式,但是需要检验当 n 趋向于无穷大时是否仍然满足这个公式,因此 n 可能会非常大。

Input

本题包含多组数据,第一行为一个数(T<=20),表示数据组数;以下 T 行,每组数据一行,包括两个数 n 和 m。

Output

每组数据输出一行,包括一个数,即第一个盒子最多能放进多少个球。

Sample Input

2
10 2
10 3

Sample Output

4
1

Data Constraint

对于 10%的数据,n<=10^6
对于 20%的数据,n<=10^9
对于 30%的数据,m=2
对于 100%的数据,n<=10^10000,2<=m<=25

Hint

样例解释:
(1).{1,3,4,5}, {2,6,8,10}
(2).{1},{2},{4}

题解

坑题!!!!!
我用pascal卡常卡了近2小时卡过了,而C++一个臭氧就飞过去了
what a fine day

这道题知道结论+高精度/压位+卡常题。
首先我们考虑把某个数字放到第一位。
然而我们发现,这样放的话第2个limit是没用的。
我们就先来一个一个考虑——
依次放1、1∗2、1∗2∗2、1∗2∗2∗2、……、1∗2m−11、1*2、1*2*2、1*2*2*2、……、1*2^{m-1}1、1∗2、1∗2∗2、1∗2∗2∗2、……、1∗2m−1
依次放2、2∗2、2∗2∗2、2∗2∗2∗2、……、2∗2m−12、2*2、2*2*2、2*2*2*2、……、2*2^{m-1}2、2∗2、2∗2∗2、2∗2∗2∗2、……、2∗2m−1(然而这个情况与上面重复,舍去)
依次放3、3∗2、3∗2∗2、3∗2∗2∗2、……、3∗2m−13、3*2、3*2*2、3*2*2*2、……、3*2^{m-1}3、3∗2、3∗2∗2、3∗2∗2∗2、……、3∗2m−1
依次放4、4∗2、4∗2∗2、4∗2∗2∗2、……、4∗2m−14、4*2、4*2*2、4*2*2*2、……、4*2^{m-1}4、4∗2、4∗2∗2、4∗2∗2∗2、……、4∗2m−1(一样重复)
依次放5、5∗2、5∗2∗2、5∗2∗2∗2、……、5∗2m−15、5*2、5*2*2、5*2*2*2、……、5*2^{m-1}5、5∗2、5∗2∗2、5∗2∗2∗2、……、5∗2m−1
……
所以最终只有奇数是可以加入答案的。
answer+=n2m−1+12answer+=\frac{\frac{n}{2^{m-1}}+1}{2}answer+=22m−1n​+1​
上面什么意思呢?
由于当:奇数∗2m−1&lt;=n奇数*2^{m-1}&lt;=n奇数∗2m−1<=n满足时,这个奇数就是一种合法的放置方法。
所以求出奇数个数即可。
把n赋个值:n=n2m−1把n赋个值:n=\frac{n}{2^{m-1}}把n赋个值:n=2m−1n​
当然,放完这些后,1∗2m……1∗22m−11*2^m……1*2^{2m-1}1∗2m……1∗22m−1这一段也是可以放入的。
于是我们再和上面类似的——
answer+=n2m+12answer+=\frac{\frac{n}{2^{m}}+1}{2}answer+=22mn​+1​
然后:n=n2m然后:n=\frac{n}{2^{m}}然后:n=2mn​
所以一直递归下去直到n=0时停止即可。
真是一道奇妙的结论题啊!
注意压位+卡常

代码

typenew=array[0..1200] of longint;
vari,j,k,l,m,t,ii:longint;p,q,op,ok:int64;s,n:ansistring;answer,nn,x1,c1,c0,c:new;procedure chu(var n:new;di:longint);
varp,yp:int64;i,pp,ypp:longint;
beginif di>1 thenbeginp:=0;for i:=n[0] downto 1 dobeginyp:=p;p:=(int64(n[i]+p*1000000000) and ((1 shl di)-1));n[i]:=int64(n[i]+yp*1000000000) shr di;end;endelsebeginpp:=0;for i:=n[0] downto 1 dobeginypp:=pp;pp:=(int64(n[i]+pp*1000000000) and ((1 shl di)-1));n[i]:=int64(n[i]+ypp*1000000000) shr di;end;end;while (n[0]>1) and (n[n[0]]=0) do dec(n[0]);
end;function plus(a,b:new):new;//inline;
varii,jj:longint;
beginfillchar(c,sizeof(c),0);if a[0]<b[0] then c[0]:=b[0]else c[0]:=a[0];for ii:=1 to c[0] dobeginif c[ii]+a[ii]+b[ii]>1000000000 thenbeginc[ii+1]:=1;c[ii]:=(c[ii]+a[ii]+b[ii])mod 1000000000;endelsec[ii]:=c[ii]+a[ii]+b[ii];end;while c[c[0]+1]=1 dobegininc(c[0]);end;exit(c);
end;
procedure insert(st:ansistring; var x:new);inline;
varlen:longint;
beginlen:=length(st);while len>=9 dobegininc(x[0]);val(copy(st,len-8,9),x[x[0]]);dec(len,9);end;if len>0 thenbegininc(x[0]);val(copy(st,1,len),x[x[0]]);end;
end;
procedure print(a:new);inline;
varii:longint;
beginwrite(a[a[0]]);for ii:=a[0]-1 downto 1 dobeginif a[ii]<100000000 then write(0);if a[ii]<10000000 then write(0);if a[ii]<1000000 then write(0);if a[ii]<100000 then write(0);if a[ii]<10000 then write(0);if a[ii]<1000 then write(0);if a[ii]<100 then write(0);if a[ii]<10 then write(0);write(a[ii]);end;
end;
beginreadln(t);while t>0 dobeginfillchar(c,sizeof(c),0);dec(t);readln(s);fillchar(answer,sizeof(answer),0);fillchar(nn,sizeof(nn),0);n:='';m:=0;j:=0;for i:=1 to length(s) dobeginif (s[i]<>' ') and (j=0) thenbeginn:=n+s[i];endelseif s[i]=' ' thenbeginj:=1;endelseif (s[i]<>' ') and (j<>0) thenbeginm:=m*10+ord(s[i])-48;end;end;c1[0]:=1;c1[1]:=1;insert(n,nn);chu(nn,m-1);x1:=plus(nn,c1);chu(x1,1);answer:=plus(answer,x1);while (nn[0]>1) or ((nn[0]=1) and (nn[1]>0)) dobeginchu(nn,m);x1:=plus(nn,c1);chu(x1,1);answer:=plus(answer,x1);end;print(answer);writeln;end;
end.
end.

转载于:https://www.cnblogs.com/RainbowCrown/p/11148371.html

jzoj3771. 【NOI2015模拟8.15】小 Z 的烦恼相关推荐

  1. 【0521模拟赛】小Z爱划水

    题目描述 小Z和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同,那么他 ...

  2. 【0521模拟赛】小Z爱数学

    题目描述 小Z想求F(n,k),F(n,k)表示n的所有因数pi中,满足n/pi <= k 的和. 小Z发现还是很水,所以他决定加大难度. 求 小Z还准备了很多个询问.现在你来解决一下吧. 输入 ...

  3. 2017-10-5模拟赛T2 小Z爱排序(sorting.*)

    Description Solution 比赛时找到了规律,但是没有证出来--(当然最后还是AC了--) 显然没有被操作的数在排好序的序列中一定是连续的一段. 所以,没有被操作的数一定从左到右连续地递 ...

  4. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 9894  Solved: 4561 [Su ...

  5. 数据结构(莫队算法):国家集训队2010 小Z的袜子

    [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到 ...

  6. 2038: [2009国家集训队]小Z的袜子(hose)+莫队入门

    题目链接:2038: [2009国家集训队]小Z的袜子(hose) 题目: Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再 ...

  7. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) 分块

    分块大法好 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2938  Solved: 13 ...

  8. CH4402 小Z的袜子(莫队)

    描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到N编号, ...

  9. BZOJ 2038: [2009国家集训队]小Z的袜子(莫队算法例题)

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只 ...

最新文章

  1. vs界面竖线光标变成灰色方块,输入时替代已有字符
  2. 使用VS进行远程调试
  3. 2013工资新规定,未来的八种人将会被淘汰!
  4. Java集合篇:集合细节:为集合指定初始容量、asList的缺陷、subList的缺陷
  5. opencv 叠加文字_Hello world.
  6. 多重 for 循环,如何提高效率?
  7. java+poodle漏洞修复_SSL3.0 POODLE漏洞修复方案
  8. 关于T4,正在发生的...
  9. 用Visual C#实现文件下载
  10. 金山云上市首日暴涨 40%,雷军:「All in」才有机会胜出
  11. 玩转python字典与列表(下)
  12. RFID将成为物联网革命的首战
  13. 支持向量机(Vladimir Vapnik)
  14. 经典莱斯康混响插件LX480 Complete限时43%OFF
  15. 英特尔的新方向:称王集成计算设备领域
  16. 动作捕捉系统用于模仿学习
  17. Ae 入门系列之十二:形状动画
  18. 干货 | 携程用户数据采集与分析系统
  19. Python求向量的余弦值
  20. 新概念英语(第一册)复习(原文及全文翻译)——Lesson 61 - Lesson 90

热门文章

  1. mssql 性能优化的一些认识
  2. 网络协议从入门到底层原理(10)WebSocket、WebService、RESTful、HTTPDNS、FTP文件传输协议、邮件相关协议、IPv6
  3. 《Algorithms》—— Dijkstra 的双栈算术表达式求值算法
  4. Manjaro_xfce 安装后配置
  5. 走进我的交易室07_资金管理公式
  6. linux脚本编程延时函数,shell脚本编程之函数
  7. oracle gather trace,Oracle 12C R2-新特性-新增两个视图:方便查看trace文件和内容
  8. 如何做一张科技感、实用性兼备的大屏
  9. PHP血清蛋白的功效,血清蛋白美容液的作用是什么
  10. vue仿微博评论回复_Vue之 3.0升级