ZOJ 3987 Numbers(枚举)
没想到是枚举,还推了规律好久,应为对Java的不了解,所以没想到枚举,或者感觉枚举太麻烦会超时,首先最多枚举2的4000次方,4000重循环不会超时,每次2的k次方的计算也不会超时,因为pow复杂度是lg。所以,应该直接暴力,开始思路被带偏,或者说对Java的不了解,没做出来,所以直接枚举能放下的最小的就行了,如果2^k-1能放下,就不放2^k,对2^(k-1)进行判断,学了一波java大数,顺便当模板耍吧。
--------------------------------------因为热爱,所以坚持--------------------------------------------
import java.math.*;
import java.util.*;public class Main
{ public static void main(String[] args){Scanner cin=new Scanner(System.in);int t=cin.nextInt(),kkk;for(int i=1;i<=t;i++){BigInteger n,m,sum,ans,ttt;n=cin.nextBigInteger();m=cin.nextBigInteger();ans=BigInteger.valueOf(0);sum=BigInteger.valueOf(0);int cnt=0;while(sum.compareTo(n)<0){ttt=BigInteger.valueOf(2).pow(cnt).multiply(m);sum= sum.add(ttt);cnt++;}for(int j=cnt;j>=0;j--){BigInteger tmp= BigInteger.valueOf(2).pow(j).subtract(BigInteger.ONE);tmp=tmp.multiply(m);if(tmp.compareTo(n)>=0)continue;tmp=BigInteger.valueOf(2).pow(j);ans=ans.add(tmp);//System.out.println(ans+" "+tmp);BigInteger kk=n.divide(tmp);kk=kk.min(m);tmp= tmp.multiply(kk);n=n.subtract(tmp);}System.out.println(ans);}}}
ZOJ 3987 Numbers(枚举)相关推荐
- ZOJ 3987 Numbers 2017CCPC秦皇岛站G题 大整数 二进制 贪心
题目:https://cn.vjudge.net/problem/ZOJ-3987 题意:给出一个数n(不超过4000个十进制数字),将其分成m(不超过10的100次方)个数,要求这m个数的和等于n. ...
- ZOJ 3987 2017CCPC秦皇岛 G:Numbers(高精度+贪心)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3987 题意: 给你两个数n和m,你要将n拆成m个数,使得这m个数 ...
- Numbers ZOJ - 3987[思维暴力]
题意:给出一个数字N以及一个M,要求把N分为M部分且满足 N=a1+a2+a3+⋯+amN = a_1 + a_2 + a_3 + \dots+a_mN=a1+a2+a3+⋯+am 询问如何让 ...
- Problem solved list
Time: 2017.11.7 :(tot solved 4) 组队训练(CCPC秦皇岛)solved 5 : ZOJ - 3981 Balloon Robot 思维 ZOJ - 3987 Numbe ...
- Python基础总结(4)
元组:戴上枷锁的列表 tuple1=(1,2,3,4,5,6,7,8) 更新元素方法 temp=('aaa','vvv','ccc','ddd') temp=temp[:2]+('hehe',)+te ...
- 杭电oj题目题型分类(转)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
- HDOJ题目分类大全
版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...
- HDU题目分类大全【大集合】
基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.105 ...
- 两数之和、三数之和、四数之和、K数之和
两数之和.三数之和.四数之和和K数之和是最近听室友提起的几道有意思的基础题,可以说是把双指针运用的淋漓尽致.(K数之和其实是一个动态规划的题,此处因为满足*数之和的的结构,放在一起对比提一下). 1. ...
- 杭电OJ题目分类(转载)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
最新文章
- 如何用比特币现金地址和数字签名证明所有权
- 来来来!DD带大家一起赢台MacBook Pro回家过年!
- 让软件版本信息自动引用SVN修订版本号
- Git复习(十)之常见报错和疑问
- nlp3-有限自动机FLandFA
- ERR! sharp EACCES: permission denied, mkdir ‘/root/.npm/_libvips‘......
- bigdecimal判断等于0_Linux | shell脚本-比较判断和运算语句
- QQ 邮箱漂流瓶将下线;华为美国公司起诉美商务部;Ubuntu 不会放弃 32 位应用程序支持 | 极客头条...
- IOS开发之——AFN-文件下载(03)
- 网络扫描实验(win10使用nmap,X-Scan工具使用)
- Datax-HdfsWriter如何实现支持decimal类型数据写入
- Spring MVC 第一个HelloWorld程序
- 分析计算机网络的功能,分析计算机网络管理系统的功能及实现
- 获取html下拉菜单selected,原生js获取select下拉框的selected的option项
- 使用karma + mocha + sinon 测试 Ajax 请求
- numpy迭代数组nditer、flat
- 02计蒜客 002蓝桥模拟
- acer 4750 Fn+亮度键(左右方向键亮度调节)无效问题的解决办法
- 如何调整jupyter notebook行间显示图片的大小
- 关于谷歌收购摩托罗拉移动的评论