#UVa:12502-Three Families

灆洢 2020-01-22 10:05:44

此題由於必須要不使用到小數計算來得解,故先透過底下推算來得解:
\( \begin{align*}
T_a &= \text{A 家族總共花的時間} \\
T_b &= \text{B 家族總共花的時間} \\
M &= \text{C 家族總共花的錢} \\
\\
T_{total} &= T_a + T_b \\
T_o &= \text{原本一個家族要花的時間} \\
&= \frac{T_{total}}{3} \\
&= \frac{T_a + T_b}{3} \\
\\
T_a’ &= \text{A 家族多花的時間} \\
&= T_a – T_o \\
T_b’ &= \text{B 家族多花的時間} \\
&= T_b – T_o \\
\\
M_a &= \text{C 家族必須付給 A 家族的錢} \\
&= M \times \frac{T_a’}{T_a’ + T_b’} \\
&= M \times \frac{T_a – T_o}{(T_a – T_o) + (T_b – T_o)))} \\
&= M \times \frac{T_a – \frac{T_a+T_b}{3}}{T_a – \frac{T_a+T_b}{3} + T_b – \frac{T_a+T_b}{3}} \\
&= M \times \frac{\frac{2T_a – T_b}{3}}{\frac{T_a+T_b}{3}} \\
&= \frac{M(2T_a – T_b)}{T_a + T_b} \\
\end{align*}
\)

C++(0.000)

/*******************************************************/
/* UVa 12502 Three Families                            */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2020/01/22                                 */
/*******************************************************/
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
  int T;
  while(scanf("%d", &T) != EOF){
    for(int caseNumber = 1 ; caseNumber <= T ; ++caseNumber){
      int x, y, z;
      scanf("%d%d%d", &x, &y, &z);
      printf("%d\n", z * (2*x - y) / (x + y));
    }
  }

  return 0;
}

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料