有两个温度计,给定五个整数F1 , B1 , F2 , B2和T ,其中F1和B1是温度计1上水的凝固点和沸点,而F2和B2是温度计上水的凝固点和沸点。 T分别是图2所示的温度,T是温度计1上记录的温度。任务是找到温度计2上的温度。
例子:
Input: F1 = 0, B1 = 10, F2 = 100, B2 = 200, T = 4
Output: 140.00
Input: F1 = 0, B1 = 100, F2 = 32, B2 = 212, T = 37
Output: 98.60
方法:考虑第一个使用U1单位制的温度计,第二个使用U2单位制的温度计。
- 这个想法是得到每个温度计上水的沸点和冰点之间的差。
- 两个温度计的凝固点和沸点之间的单位数显示出相同的温差。
So, (B1 – F1) U1 == (B2 – F2) U2
By Unitary method, U1 = ( B2 – F2 ) / ( B1 – F1 ) U2
Relative value of U2 is T – F1 and U1 is T – F2
Hence, T = F2 + ( ( B2 – F2 ) / ( B1 – F1 ) ) * ( T – F1 )
下面是上述方法的实现:
C
// C program for above approach
#include
// Function to return temperature
// in the second thermometer
double temp_convert(int F1, int B1, int F2,
int B2, int T)
{
float t2;
// Calculate the temperature
t2 = F2
+ (float)(B2 - F2)
/ (B1 - F1) * (T - F1);
return t2;
}
// Driver Code
int main()
{
int F1 = 0, B1 = 100;
int F2 = 32, B2 = 212;
int T = 37;
float t2;
printf("%.2f",
temp_convert(F1, B1, F2, B2, T));
return 0;
}
输出:
98.60
时间复杂度: O(1)
辅助空间: O(1)