鏈接:https://ac.nowcoder.com/acm/contest/332/A
來源:牛客網
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 32768K,其他語言65536K
64bit IO Format: %lld
題目描述
小B準備出模擬賽。
她把題目按難度分爲四等,分值分別爲6,7,8,9。
已知小B共出了m道題,共n分。
求小B最少出了多少道6分題。
輸入描述:
兩個正整數n,m
輸出描述:
一個數,表示答案。
若無解,輸出"jgzjgzjgz"。
示例1
輸入
複製
34 5
輸出
複製
1
示例2
輸入
複製
32 5
輸出
複製
3
示例3
輸入
複製
5 1
輸出
複製
jgzjgzjgz
備註:
n,m\le 10^{12}
思路:最開始的時候意識到只有在6n到7n之內的閉區間纔有可能有6,到時並沒有注意到數學規律,挺可惜的一題
錯誤代碼:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BigInteger n=sc.nextBigInteger();
BigInteger m=sc.nextBigInteger();
BigInteger tmp=new BigInteger("0");
BigInteger tmp1=new BigInteger("6");
BigInteger tmp2=new BigInteger("7");
BigInteger tmp3=new BigInteger("5");
BigInteger tmp4=new BigInteger("9");
if(m.multiply(tmp1).compareTo(n)>0 || m.multiply(tmp4).compareTo(n)<0)
System.out.println("jgzjgzjgz");
else if(n.divide(m).compareTo(tmp1)==0 && n.mod(m).compareTo(tmp)==0)
System.out.println(n.divide(m));
else if(m.multiply(tmp2).compareTo(n)>0 && m.multiply(tmp1).compareTo(n)<0) {
System.out.println((m.multiply(tmp2).subtract(n)));
}else
System.out.println(0);
sc.close();
}
}
AC代碼:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long n=sc.nextLong();
long m=sc.nextLong();
if(n<m*6 || n>m*9)
System.out.println("jgzjgzjgz");
else if(n>=m*7)
System.out.println(0);
else
System.out.println(m-n%m);
}
}