2017CCPC秦皇岛 G题Numbers&&ZOJ3987【大数】
题意:
给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n,并且要使得这m个数的或值最小。
思路:
从二进制的角度分析,如果这m个数中有一个数某一位为1,那么最后或起来这一位肯定是为1的,所以如果某一位为1了,那么我们尽量就让其余位也等于1。所以我们从最高位开始枚举,看看这一位是否需要为1,如果需要为1的话,那么剩下的几个数也尽量让这一位等于1。
代码:
不懂啊,还是看别人的代码写的,觉得有用就拿去吧。(卧槽,第一次开我的IDEA写java还不错的嘛)
import java.math.*;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
BigInteger n, m;
Scanner in = new Scanner(System.in);
int T = in.nextInt();
for(int cas=0;cas<T;cas++){
n = in.nextBigInteger();
m = in.nextBigInteger();
int len = 0;
BigInteger ss = n;
while(ss.compareTo(BigInteger.ZERO)>0){
ss = ss.divide(BigInteger.valueOf(2));
len++;
}
BigInteger tmp;
BigInteger ans = new BigInteger("0");
for(int i = len; i>0; i--){
if(n.compareTo(BigInteger.ZERO)<=0) break;
tmp = BigInteger.valueOf(2).pow(i-1).subtract(BigInteger.valueOf(1));
BigInteger sum = tmp.multiply(m);
if(sum.compareTo(n)<0){
BigInteger num = n.divide(BigInteger.valueOf(2).pow(i-1));
if(num.compareTo(m)>0) num = m;
n = n.subtract(BigInteger.valueOf(2).pow(i-1).multiply(num));
ans = ans.add(BigInteger.valueOf(2).pow(i-1));
}
}
System.out.println(ans);
}
in.close();
}
}
2017CCPC秦皇岛 G题Numbers&&ZOJ3987【大数】的更多相关文章
- 2017CCPC秦皇岛G ZOJ 3987Numbers(大数+贪心)
Numbers Time Limit: 2 Seconds Memory Limit: 65536 KB DreamGrid has a nonnegative integer n . He ...
- 2017 CCPC秦皇岛 G题 Numbers
DreamGrid has a nonnegative integer . He would like to divide into nonnegative integers and minimi ...
- 2017CCPC秦皇岛 H题Prime Set&&ZOJ3988
题意: 定义一种集合,只有两个数,两个数不同且加起来为素数.要从n个数里抽出数字组成该集合(数字也可以是1~n,这个好懵圈啊),要求你选择最多k个该种集合组成一个有最多元素的集合,求出元素的数量. 思 ...
- 2017CCPC秦皇岛 A题Balloon Robot&&ZOJ3981【模拟】
题意: 一个机器人在长为M的圆形轨道上送气球,当机器人到达M号点的时候下一站会回到1号点,且全程不会停止运动.现在在长为M的轨道上有N个队伍,队伍会在某个时间做需要一个气球,机器人需要送过去.一共有P ...
- 2017CCPC秦皇岛 C题Crusaders Quest&&ZOJ3983【模拟+STL】
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3983 题意: 给定9个血槽,有三种物品,每次可以把连续相同的物品抵消 ...
- 2017CCPC秦皇岛 M题Safest Buildings&&ZOJ3993【复杂模拟】
题意: 给出两个半径R,r,R表示第一次的大圈半径,r表示第二次的小圈半径.第一次大圈的圆心位于(0,0),第二次小圈的圆心未知,但在大圈内,给你一个n,然后给出n个屋子的位置,问这些屋子中,第二次在 ...
- 2017CCPC秦皇岛 E题String of CCPC&&ZOJ3985【模拟】
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3985 题意: 给定一个字符串,由c和p组成,可以添加c或者p. 串中出现一 ...
- 2017CCPC秦皇岛 L题One-Dimensional Maze&&ZOJ3992【模拟】
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3992 题意: 走迷宫,一个一维字符串迷宫,由'L'.'R'组成,分别 ...
- G - Self Numbers(2.2.1)
G - Self Numbers(2.2.1) Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & % ...
随机推荐
- A1133. Splitting A Linked List
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- 【洛谷P1082】同余方程
题目大意:求关于 \(x\) 的同余方程 \[ax \equiv 1 \pmod {b}\] 的最小正整数解. 题解:exgcd 板子题. 代码如下 #include <bits/stdc++. ...
- 跟我一起学习vue2(熟悉vue.js)[一]
由于有angularjs的基础,所以我第一步是在官网:https://cn.vuejs.org/ 上面看了三遍他的理论知识,还有实例. 现在做完了第二步,就是在菜鸟教程:http://www.runo ...
- Day8--Python--文件操作
对文件内部的内容进行操作1.open('文件路径', mode='模式(默认是读r)', encoding='编码') 读取内容: f = open('d:/练习.txt', mode='r', en ...
- 对C# .Net4.5异步机制测试(二)——加深印象
public static void Main() { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); In(); Console.W ...
- tp5的include 标签 不能用了么
直接调用页头页尾 直接原样显示了 正解: 要注意 file后不能加空格, 不然放在 页头会报错, 放在其他地方则不会被解析. 以上是我的经历,供参考. {include file ='public/h ...
- c#中数组的总结
Array数组: 基本定义:string[] Scences={"sky","star","sun"} 或者 int[] Scences= ...
- zookeeper的监控
1.idea插件: zookeeper https://blog.csdn.net/long290046464/article/details/52974061 优点:直接查看,不用来回切换监控 缺点 ...
- C#与 微信小程序 互为加解密方案
CryptoJS下载地址: https://code.google.com/archive/p/crypto-js/downloads http://download.csdn.net/detail/ ...
- uby on rails 用户密码加密
运行环境: rails 4.2.1 ruby 2.0.0p481 mysql(支持多种数据库) 在实际的项目中,需要注意对用户 ...