[伯俊]1011号/Java,Python


Baekjoon Online Judge


algorithm practice


問題をちくじ解く


8.基本数学1


Java/Python

9. Fly me to the Alpha Centauri


1011号
デバイスの使用回数を距離で出力する問題

ウヒョンは小さい頃、地球以外の他の惑星でも人類が生き残ることができると信じていた.そして、彼が地球という世界に足を踏み入れてから23年後の今日、世界で最も若いASNA宇宙飛行士となり、新しい世界に足を踏み入れる光栄な時を待っています.
彼が乗る宇宙船には、アルファCentauriという新しい人類の家を切り開くための大規模な生活維持システムが搭載されているため、その巨大なサイズと品質を理由に、最新技術の力を総合的に運用して開発された宇宙移動装置が搭載されている.しかし、このような空間移動装置の欠点は、移動距離が急激に増加すると、機械に深刻な欠陥が生じ、従来の作業時期にk光年を移動する際にk−1、kまたはk+1光年で再移動できることである.例えば、この装置を初めて起動すると、理論的には−1,0,1光年移動できるが、実際には負またはゼロ距離移動は意味がないので、1光年移動し、その後0,1,2光年移動することができる.△ここでさらに2光年移動すれば、次の時期に1、2、3光年移動できる.
金氏は、空間移動装置の起動時のエネルギー消費が大きいことをよく知っているので、x点からy点への移動が最も少ない起動回数を考えている.しかしながら、y点に到達しても、空間移動装置の安全性を確保するためには、y点に到達するまでの移動距離は1光年でなければならない.
キム・ウヒョンのために、x点からy点に正確に移動するために必要な空間移動装置の操作回数の最高値を作成してください.
検索ルール
  • Java
  • import java.util.Scanner;
     
    public class Main {
    	public static void main(String[] args) {
        
    		Scanner sc = new Scanner(System.in);
     
    		int T = sc.nextInt();	
    		
    		for(int i = 0; i < T; i++) {
            
    			int X = sc.nextInt();
    			int Y = sc.nextInt();
    			
    			int distance = Y - X;
    			
    			int max = (int)Math.sqrt(distance);	
                
    			if(max == Math.sqrt(distance)) {
    				System.out.println(max * 2 - 1);
    			}
    			else if(distance <= max * max + max) {
    				System.out.println(max * 2);
    			}
    			else {
    				System.out.println(max * 2 + 1);
    			}	
    		}
    	}
    }
  • Python
  • import math
    
    T = int(input())
    
    for _ in range(T):
        x, y = map(int,input().split())
        distance = int(y - x)
        if distance <= 3:
            print(distance)
        else:
            cnt = int(math.sqrt(distance))
            if distance == cnt ** 2:
                print(2*cnt-1)
            elif cnt ** 2 < distance <= cnt ** 2 + cnt:
                print(2*cnt)
            else:
                print(2*cnt+1)
    今日は基本数学1の例題です!