题目
http://exercise.acmcoder.com/online/online_judge_ques?ques_id=4410&konwledgeId=41
import java.util.Scanner;
/**
* 分堆主要是考察思维逻辑
* 想要尽可能多的堆数 那就是k k+1 k...不浪费一点石头
* */
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int k=scanner.nextInt();
int result=2*(n/(2*k+1));
if ((n%(2*k+1)>=k)){
result=2*(n/(2*k+1))+1;
}
System.out.println(result);
}
}
java的求余
package com.smart.reflect;
import java.math.*;
public class Main {
public static void main(String[] args) {
// create 3 BigInteger objects
BigInteger bi1, bi2, bi3, bi4;
bi1 = new BigInteger("-100");
bi2 = new BigInteger("3");
// perform mod operation on bi1 using bi2
bi3 = bi1.mod(bi2); //这里bi2不能小于0 否则是会报错的
bi4 = bi1.remainder(bi2);
String str = bi1 + " mod " + bi2 + " is " + bi3;
String str2 = bi1 + " rem " + bi2 + " is " + bi4;
// print bi3 value
System.out.println(str);
System.out.println(str2);
}
}
/**
* 如果是100 3 两个的结果都是1
* 如果是-100 3 mod的结果是2 rem的结果是-1
* 因为在mod中如果除数和被除数符号不一致的情况下 返回的结果就是bi2-abs(正常的结果值)
100 mod 3 is 1
100 rem 3 is 1
-100 mod 3 is 2
-100 rem 3 is -1
* */