题意:给你一个数n,让你找m个非负整数,使得它们的和为n,并且按位或起来以后的值最小化。输出这个值。

从高位到低位枚举最终结果,假设当前是第i位,如果m*(2^i-1)<n的话,那么说明这一位如果填零,剩下的位不论怎么填,都绝对凑不出n来,所以这一位必须填1.如果m*(2^i-1)>=n,这一位就填1,然后把n变为max(n mod 2^i , n-m*2^i),重复这个过程即可。

要用高精度。

import java.util.*;
import java.io.*;
import java.math.*; public class Main{
public static void main(String[] argc){
int T;
BigInteger n,m;
BigInteger[] pw=new BigInteger[4005];
pw[0]=BigInteger.ONE;
for(int i=1;i<=4001;++i){
pw[i]=pw[i-1].multiply(BigInteger.valueOf(2l));
}
Scanner sc = new Scanner (new BufferedInputStream(System.in));
T=sc.nextInt();
for(int zu=1;zu<=T;++zu){
n=sc.nextBigInteger();
m=sc.nextBigInteger();
String s=n.toString();
int len=s.length();
BigInteger ans=BigInteger.ZERO;
for(int i=len*4;i>=0;--i){
BigInteger tmp=m.multiply(pw[i].subtract(BigInteger.ONE));
if(tmp.compareTo(n)==-1){
ans=ans.add(pw[i]);
BigInteger t=n.subtract(m.multiply(pw[i]));
BigInteger t2=n.mod(pw[i]);
if(t.compareTo(t2)==1){
n=t;
}
else{
n=t2;
}
}
}
System.out.println(ans);
}
sc.close();
}
}

【贪心】【高精度】zoj3987 Numbers的更多相关文章

  1. POJ 2325 Persistent Numbers#贪心+高精度除法

    (- ̄▽ ̄)-* 这道题涉及高精度除法,模板如下: ]; ];//存储进行高精度除法的数据 bool bignum_div(int x) { ,num=; ;s[i];i++) { num=num*+ ...

  2. poj 2325 Persistent Numbers (贪心+高精度)

    把输入数字每次从9-2除,能整除则记录该数字,最后从小到大输出. 应该算是水题,不过窝第一次写高精度除法,虽然1A,不过中间改了好多次. /****************************** ...

  3. P1080 国王游戏 贪心 高精度

    题目描述 恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 nn 位大臣排成一排,国王站在队伍的 ...

  4. luogu1080 国王游戏(贪心+高精度)

    貌似这道题是碰巧蒙对了贪心的方式..就是把ai*bi越小的放在越前面 (不过也符合直觉) 然后统计答案需要用高精度,然后就调了一年 #include<cstdio> #include< ...

  5. luoguP1080 国王游戏 (贪心+高精度)

    题目链接:https://www.luogu.org/problemnew/show/P1080 参考:https://www.luogu.org/problemnew/solution/P1080 ...

  6. 【NOIP2012提高组】国王游戏 贪心 + 高精度

    题目分析 题目答案不具有单调性,所以不可以二分,转而思考贪心.因为无法确定位置,所以考虑如何才能让对于每一个$1 ~ i$使得$i$的答案最大,即$1 ~ i$最后一个最优.若设对于位置$i$,$a[ ...

  7. P1080 【NOIP 2012】 国王游戏[贪心+高精度]

    题目来源:洛谷 题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王 ...

  8. [noip2012]国王游戏<贪心+高精度>

    题目链接: https://vijos.org/p/1779 https://www.luogu.org/problem/show?pid=1080 http://codevs.cn/problem/ ...

  9. hdu-5920 Ugly Problem(贪心+高精度)

    题目链接: Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

随机推荐

  1. 蓝色的企业后台cms管理系统——后台

    链接:http://pan.baidu.com/s/1kViBtTt 密码:7hbk

  2. Coursera在线学习---第二节.Octave学习

    1)两个矩阵相乘 A*B 2)两个矩阵元素位相乘(A.B矩阵中对应位置的元素相乘) A.*B 3)矩阵A的元素进行平方 A.^2 4)向量或矩阵中的元素求倒数 1./V    或   1./A 5) ...

  3. 使用maven打包项目遇到错误: http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

    今天在使用maven打包项目时遇到一个错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin ...

  4. discuz 积分按日重新计算,(摒弃以前24小时计算)

    修改\source\module\forum\forum_misc.php将 foreach(C::t('forum_ratelog')->fetch_all_sum_score($_G['ui ...

  5. MongoDB之python简单交互(三)

    python连接mongodb有多种orm,主流的有pymongo和mongoengine. pymongo 安装相关模块 pip install pymongo pymongo操作 主要对象 Mon ...

  6. SQLite3 使用教学

    source: SQL中文站:http://www.sqlite.com.cn/MySqlite/4/378.Html OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具 ...

  7. 内存不够清理方法,costdown项目时如果裁剪不下来,也可以参考

    Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches 频繁的文件访问会导致系统的Cache使用量大增 $ free -m total used free shared ...

  8. 解决su – 后显示-bash-4.1#

    <1>现象 设置tfs的管理用户时. su - admin时,出现 -bash-4.1# <2>解决 chown  admin:admin /home/admin        ...

  9. 《深入理解Java虚拟机》笔记--第十三章、线程安全与锁优化

    先保证并发的正确性,然后在此基础上来实现高效. 线程安全:     当多个线程访问一个对象时,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操 ...

  10. 后门技术和Linux LKM Rootkit详解

    2010-01-15 10:32 chinaitlab chinaitlab 字号:T | T 在这篇文章里, 我们将看到各种不同的后门技术,特别是 Linux的可装载内核模块(LKM). 我们将会发 ...