洛谷入门-P1888

三角函数

题目描述

输入一组勾股数 \(a,b,c(a\neq b\neq c)\),用分数格式输出其较小锐角的正弦值。(要求约分。)

输入格式

一行,包含三个正整数,即勾股数 \(a,b,c\)(无大小顺序)。

输出格式

一行,包含一个分数,即较小锐角的正弦值

样例 #1

样例输入 #1

3 5 4

样例输出 #1

3/5

提示

数据保证:\(a,b,c\) 为正整数且 \(\in [1,10^9]\)

我的思路

首先选出a, b, c 中的max , min
考虑到算法时空的占用,用简单的条件语句最好
要最简分数就要用到最大公因数的公式(欧拉公式-辗转相除法-gcd)

我的代码

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a = in.nextInt(), b = in.nextInt(), c = in.nextInt();
		/*
		 * How to use the shortest code to find min and max in tree elements
		 * 
		 */
//		int arr[] = { a, b, c }; // 1
//		for (int i = 0; i < arr.length; i++) {
//			for (int j = 1; j < arr.length; j++) {
//				if (arr[j - 1] < arr[j]) {
//					int t = arr[j - 1];
//					arr[j - 1] = arr[j];
//					arr[j] = t;
//				}
//			}
//		}
//		a = arr[0];
//		b = arr[1];
//		c = arr[2];
//		System.out.println(c / gcd(a, c) + "/" + a / gcd(a, c));

		int max = a, min = a; // the select short mini // 2
		if (max < b)
			max = b;
		if (max < c)
			max = c;
		if (min > b)
			min = b;
		if (min > c)
			min = c;
		System.out.println(min / gcd(max, min) + "/" + max / gcd(max, min));
		in.close();
	}

	static int gcd(int a, int b) { // 3
		return b == 0 ? a : gcd(b, a % b);
	}
}

关键:

简单找max, min

知道gcd

posted on 2022-10-12 13:09  Hex酱  阅读(118)  评论(0)    收藏  举报

导航