好久没有刷算法题了,于是打算从头刷一刷POJ,从练手题开始!
公式题目已经给了,所以这道题没什么难点,如果非要说的话可能就是需要自己反推一下dewpoint的计算公式;我比较懒所以就用了两个变量存了一下,其实也完全可以省略的。
刚开始WA了几次,后来才发现是因为输出结果的数字没有近似到一位小数。
#include <iostream>
#include <cmath>
#include <math.h>
#include <iomanip>
using namespace std;
double placeholder = 101;
double h_from_dewpoint(double d) {
return 0.5555 * ((6.11 * pow(2.718281828, (5417.7530 * ((1/273.16) - (1/(d+273.16)))))) - 10.0);
}
double dewpoint_from_h(double h) {
double e = (h / 0.5555 + 10.0) / 6.11;
double power = log(e) / log(2.718281828);
return 1 / (1/273.16 - power / 5417.7530) - 273.16;
}
void helper(double t, double d, double h) {
if (t == placeholder) {
t = h - h_from_dewpoint(d);
} else if (d == placeholder) {
d = dewpoint_from_h(h - t);
} else {
h = t + h_from_de