[伯俊-Java]基礎数学1(1,7,9号)の再解


100万年ぶりのポスターです
中秋节は大食いしてから勉强しようと思って、本当にずるずるするのが嫌いです...
問題もこの部分(基本数学1)の最後の問題なので難しいかもしれません.もう言いたくないほど.ほほほ
今日は直前に回答し直す質問を発表します+1011号
1712)損益バランスポイント
「ノートパソコンの価格はC万ウォンだそうです.一般的に生産台数を増やせば、ある瞬間に総収入(販売費用)が総費用(=固定費用+可変費用)を上回る.当初、総収入が総費用より大きいことから利益が生じた場所を損益バランスポイント(BREAK-EVEN POINT)と呼ぶ.
この部分から分かるように、仮にN台を生産する場合、
[固定料金+N*が便秘用>販売費用]の場合、損益のバランスポイントを超えていると言えます.
したがって,この条件を基準として解答すれば,簡単に問題を解決できる.
注目すべきは、損益のバランスポイントを超えなければならないので、1を加算することです.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String ABC = br.readLine();
        int A = Integer.parseInt(ABC.split(" ")[0]);
        int B = Integer.parseInt(ABC.split(" ")[1]);
        int C = Integer.parseInt(ABC.split(" ")[2]);

        if(B>=C){
            System.out.println(-1);
            System.exit(0);
        }

        System.out.println(A/(C-B)+1);
    }
}
初めて解いた時は+1がなかったので苦しかった
2839)砂糖を送る
ポイントは2つあります.
  • 3キロ袋と5キロ袋があります.
  • できるだけ少ない袋を持って行きたいです.
    △ex.3 kgの袋を6個持ってもいいですが、5 kgと3 kgを3個持っていけば、もっと少ない袋を送ることができます.
  • 優先順位を決めて解いてみる.5に分けると3に分けるよりも少ない袋ができると考えられるので,5に分けることを優先条件として解く.
    しかし11の場合、5-5-1ではなく5-3-3が発生したため、例外-1が出力される.
    だから私は一つの方法を考えて、3を5に分けて、それから3を3に分けました.
  • 5:繰り返し文を終了する場合は、次のコードを実行します.
  • 3の場合:分け終わったら出かけます.
  • 3に分けられ、5:candyに遭遇しなければ負の数になって離れます.
  • 1と2の場合、前の条件を満たすと、以下のコードを終了して実行し、結果を問題なくエクスポートします.
    3の場合、キャンディは負数なので例外として扱います.
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int candy = Integer.parseInt(br.readLine());
            int result = 0;
            while(candy%5 != 0){
                candy = candy-3;
                result++;
            }
            if(candy<0){
                System.out.println(-1);
                System.exit(0);
            }
            result += candy / 5;
    
            System.out.println(result);
        }
    }
    1011)Fly me to Alpha Centauri
    これはみんなが望んでいる最後の問題だ.初めて1011号に触れた時は、金色のTシャツだったので一度びっくりしましたが、写真を見て2度びっくりしました.
    問題そのものも熟考すべき問題だ.
    まずはやってみました1から20まで、一つずつ使っていました.
    この過程でいくつかの法則が発見された.

    (本当にアクセルと通話できなくて悲しいなああああああああああ)
  • 距離はY-X値です.
  • maxは距離の中で最大の値です.
  • countは回転数です.
  • この前提で問題を解きましょう.
    1)まず,count値が変化する場合は2種類あり,そのうちの1つが最大値が変化する場合である.
    この場合、「distang=max^2,count=2*max-1」が作成されます.
    2)次の変更条件を見つけるのは難しい.
    まず、前の条件を基準にして、次の変更は最大距離を歩くことです.
    したがって,「max^2<距離この条件下のcountは2 maxである.
    3)よし、あとはelseで解決しよう.このときのcountは2 max+1である.
    最終的には,2番目の条件を基準としてcountを決定する問題といえる.
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Main {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int T = Integer.parseInt(br.readLine());
            for(int i = 0; i < T; i++) {
                String XY = br.readLine();
                int x = Integer.parseInt(XY.split(" ")[0]);
                int y = Integer.parseInt(XY.split(" ")[1]);
                int distance = y - x;
                int n = 0;
                int result = 0;
                
                int max = (int)Math.sqrt(distance);
                
                if(max == Math.sqrt(distance))
                    result = 2*max -1;
                else if(max*max<distance && max*max+max >= distance){
                    result = max*2;
                }
                else result = max*2 +1;
                System.out.println(result);
            }
        }
    }
    もちろん時間もかかり、様々な条件を基準に試みました.
    しかし、繰り返した文章の中で、タイムアウトと忍耐の制限で、結局見つけた.
    しかし、もっと大きな問題は、理解しにくいことです.
    重要なのは、回復期後、地上でボールを返すように問題をやり直すことだと思います.