题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=3299
思路:给你T、D、H中的任意2个,求第三个,简单的模拟
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- public class Main {
- public static void main(String[] args) throws Exception {
- BufferedReader read = new BufferedReader(new InputStreamReader(
- System.in));
- String str = null;
- double t = 0;
- double d = 0;
- double h = 0;
- double e = 0;
- String[] s = null;
- boolean[] used = null;
- while (!(str = read.readLine()).startsWith("E")) {
- s = str.split(" ");
- used = new boolean[3];
- for (int i = 0; i < 2; i++) {
- char c = s[i * 2].charAt(0);
- if (c == 'T') {
- t = Double.parseDouble(s[i * 2 + 1]);
- used[0] = true;
- } else if (c == 'D') {
- d = Double.parseDouble(s[i * 2 + 1]);
- used[1] = true;
- } else if (c == 'H') {
- h = Double.parseDouble(s[i * 2 + 1]);
- used[2] = true;
- }
- }
- if (used[0] && used[1]) {
- e = 6.11 * Math
- .exp(5417.7530 * ((1 / 273.16) - (1 / (d + 273.16))));
- h = t + 0.5555 * (e - 10.0);
- } else if (used[0] && used[2]) {
- e = (h - t) / 0.5555 + 10.0;
- d = 1 / (1 / 273.16 - Math.log(e / 6.11) / 5417.7530) - 273.16;
- } else if (used[1] && used[2]) {
- e = 6.11 * Math
- .exp(5417.7530 * ((1 / 273.16) - (1 / (d + 273.16))));
- t = h - 0.5555 * (e - 10.0);
- }
- System.out.printf("T %.1f D %.1f H %.1f/n", t, d, h);
- }
- }
- }