JAVA大数贪心
题意:
01给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n,并且要使得这m个数的或值最小。
思路分析:
一个简单的贪心,从高位到低位,判断当前位可否为 1 ,若可以,则将所有的数的这一位全部都变成 1
代码示例:
import java.math.*;
import java.util.*; public class study { public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
BigInteger n, m; int t = cin.nextInt();
for(int cas = 0; cas < t; cas++) {
n = cin.nextBigInteger();
m = cin.nextBigInteger();
BigInteger ans = BigInteger.valueOf(0); int len = 0;
BigInteger ss = n, v = BigInteger.valueOf(0);
while(ss.compareTo(v)>0){
ss = ss.divide(BigInteger.valueOf(2));
len++;
} for(int i = len; i >= 0; i--) {
BigInteger tem = BigInteger.valueOf(2);
tem = tem.pow(i).subtract(BigInteger.valueOf(1)).multiply(m);
//System.out.println(tem);
if (tem.compareTo(n) < 0) {
BigInteger f = BigInteger.valueOf(2).pow(i);
ans = ans.add(f);
BigInteger p = n.divide(f);
if (p.compareTo(m) >= 0) n = n.subtract(m.multiply(f));
else n = n.subtract(p.multiply(f));
//System.out.println(f);
//System.out.println(p);
}
}
System.out.println(ans);
}
} }
JAVA大数贪心的更多相关文章
- java大数
java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...
- JAVA大数运算
java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...
- java大数总结【转】
java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...
- HDU5047Sawtooth(java大数)
HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...
- JAVA大数类
JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...
- HDU4762(JAVA大数)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- ZOJ3477&JAVA大数类
转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...
- 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&记忆化递归
HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...
- 收藏的一段关于java大数运算的代码
收藏的一段关于java大数运算的代码: package study_02.number; import java.math.BigDecimal; import java.math.BigIntege ...
随机推荐
- Python--day46--今日概要
- AWS Credentials 使用
AWS的文档系统真是烂到家了!!!!! To connect to any of the supported services with the AWS SDK for Java, you must ...
- 154th LeetCode Weekly Contest
A B D均比较简单.先说C题 K-Concatenation Maximum Sum Given an integer array arr and an integer k, modify the ...
- js基础——变量、作用域、内存
1.new关键字创建的是引用类型: eg. var box = new Object(); box.name = "Linda";//引用类型添加属性没问题 al ...
- linux oops 消息
大部分 bug 以解引用 NULL 指针或者使用其他不正确指针值来表现自己的. 此类 bug 通 常的输出是一个 oops 消息. 处理器使用的任何地址几乎都是一个虚拟地址, 通过一个复杂的页表结构映 ...
- 51nod 矩阵快速幂(模板题)
1113 矩阵快速幂 基准时间限制:3 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给出一个N * N的矩阵,其中的元素均为正整数.求这个矩阵的M次方.由于M次方的计算结果太大 ...
- JS与JSP分别是什么
JS:JavaScript: JSP:Java Server Pages. jsp:只是servlet的一个变种,方便书写html内容才出现的,servlet是根本,所有jsp能做的,servlet全 ...
- CF1151FSonya and Informatics
CF1151FSonya and Informatics 给一个长度为 n$ (n\leq 100)$的 \(0/1\) 串,进行 k\((k \leq 10^9)\)次操作,每次操作选择两个位置 \ ...
- JMM中的Happens-Before原则
在java内存模型中,happens-before应该理解为:前一个操作的结果,可以被后续的操作获取,即内存可见性. 为了解决多线程的内存可见性问题,就提出了happens-before原则, ...
- Linux 安装 Nvidia 驱动出现的黑屏各种问题和解决方式
之前因为想OBS支持h264-nvenc这个功能然后就编译ffmpeg,然后使用Github上面的一个编译项目),项目编译完成之后重启电脑,然后就进入不了系统的登录页面了,选择进入Linux系统之后就 ...