出題

鏈接: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);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章