[伯俊-Java]基本数学2(7,8,9,10回)


今日は幾何学に関する問題です.
この3つの問題はすべて簡単に解くことができる問題だ.
1085)矩形から脱出する
与えられた座標からなる矩形内のx,y座標が矩形からずれる最短距離問題.
これは1つの象限上の座標に関する問題であるため,x軸座標の差とy軸の差だけを要求すると容易に得られる.
ここで、トラップはxであり、yの座標は0に近いか、所与の座標に近いか.
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 T = br.readLine();

        int x = Integer.parseInt(T.split(" ")[0]);
        int y = Integer.parseInt(T.split(" ")[1]);
        int w = Integer.parseInt(T.split(" ")[2]);
        int h = Integer.parseInt(T.split(" ")[3]);
        int height = 0;
        int width = 0;

        if(h-y > y) height = y;
        else height = h-y;
        if(w-x > x) width = x;
        else width = w-x;

        if(height <= width) System.out.println(height);
        else System.out.println(width);
    }
}
3009)第四点
この問題も象限の座標に関する問題です.
矩形の4つの点の中で3つの点を与えたとき、残りの1つの点を求める問題.
軸に平行なので、傾斜した矩形ではなく、直線矩形です.したがって、2つのx座標が同じ点、2つのy座標が同じ点が見つかる可能性があります.
例から得られた値は、(5、5)、(5、7)、(7、5)、1番と2番の座標がx座標であるため、この矩形の縦座標は7-5=2、1番と3番の座標はy座標であるため、この矩形の横座標は7-5=2である.
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 T1 = br.readLine();
        String T2 = br.readLine();
        String T3 = br.readLine();

        int x1 = Integer.parseInt(T1.split(" ")[0]);
        int y1 = Integer.parseInt(T1.split(" ")[1]);
        int x2 = Integer.parseInt(T2.split(" ")[0]);
        int y2 = Integer.parseInt(T2.split(" ")[1]);
        int x3 = Integer.parseInt(T3.split(" ")[0]);
        int y3 = Integer.parseInt(T3.split(" ")[1]);

        System.out.println(String.format("%d %d",check(x1,x2,x3),check(y1,y2,y3)));
    }
    public static int check(int a, int b, int c){
        if(a == b) return c;
        else if(a == c) return b;
        else return a;
    }
}
4153号)直角三角形
今回の問題はピタゴラスの定理を利用した問題です.
数式セクションをスキップして、数式を書く準備をします.
直角三角形の横と縦は斜面より小さいはずです.したがって、与えられたa、b、cにおいて、最大の値は斜面であるべきである.
a,b,cの最値を求め,直角三角形であることを式で判別できた.
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 T = br.readLine();
        while(!T.equals("0 0 0")){
            int a = Integer.parseInt(T.split(" ")[0]);
            int b = Integer.parseInt(T.split(" ")[1]);
            int c = Integer.parseInt(T.split(" ")[2]);

            int max = max(a,b,c);
            int tmp = 0;
            if(max == 0){
                tmp = a;
                a = c;
                c = tmp;
            }
            else if(max == 1){
                tmp = b;
                b = c;
                c = tmp;
            }

            if(tri(a,b)==c) System.out.println("right");
            else System.out.println("wrong");
            T = br.readLine();
        }

    }
    public static int max(int a, int b, int c){
        int max = Math.max(a,b);
        max = Math.max(max,c);
        if(max == a) return 0;
        else if(max == b) return 1;
        else return 2;
    }
    public static double tri(int a, int b){
        return Math.sqrt(a*a + b*b);
    }
}
3053)タクシージオメトリ
最後の問題はタクシー幾何学です.
これは今日の問題の中で最も理解しにくいものです.
円の幅を求める問題は、私たちがよく使うpi*r^2ではなく、タクシージオメトリの方法で円を求める問題です.
この問題の要点を指摘する.
  • ウォン:
  • 点の集合で、平面上のある点に一定の距離がある
  • 2 2点間の距離:D(T 1,T 2)=|x 1-x 2|+|y 1-y 2|
  • 問題を見れば変なところがわかる.
    私たちが知っている2点間の距離の公式とは全く違います.
    これは,我々が知っている式が2点間の理論上の「最短距離」を求める式であるからである.
    簡単に(0,0)と(1,1)を入れると、2点の間の距離は√2になります.しかし、ここには2という答えがあります.
    答えを見つけるために、公式を見るべきです.
    2点間の距離を求める式から見ると、「2点間の横+縦」です.それを図に描くと、次のような図が現れます.

    上の画像から見ると、全く違う画像が出てきます.
    ポイントはタクシージオメトリの円が横、縦同じダイヤモンドの形をしていることです.
    上の幅を求めると2*r^2になります.
    問題を解くのは難しくないが、ここ自体を考えると難しい.
    おしゃべり
    問題を解いてみると、なぜ「タクシー」なのかがわかります.
    タクシーの最短距離に障害物があると仮定した場合、考えるべきです.
    ビルの間でタクシーに乗るとき、最短距離を歩くために、ビルを通り抜けることはできません.
    これらの計算は実際の生活にも役立つかもしれません.
    これから開発者の仕事をするときも、このような柔軟な思考が必要だと思います.