Official

A - kcal Editorial by KoD


\(1\) mL あたり \(A/100\) kcal であるので、答えは \(AB / 100\) となります。 以下のようなコードで正解することができます (C++) :

#include <iostream>
using namespace std;

int main() {
  int A, B;
  cin >> A >> B;
  cout << A * B / 100.0 << '\n';
  return 0;
}

ここで、「100 で割る」という操作を A * B / 100 と書いてしまうと、これは整数同士の演算であるので、切り捨ての除算となります。例えば 25 * 25 / 1006.25 ではなく 6 となってしまいます。100.0 は double 型であると解釈されるので、実数の演算となります。

明示的に double 型にキャストすることも可能です :

#include <iostream>
using namespace std;

int main() {
  int A, B;
  cin >> A >> B;
  cout << ((double) (A * B)) / 100 << '\n';
  return 0;
}

なお、この問題の制約では上記のコードで正解を得られますが、\(A = 12345, B = 98765\) を入力として与えると、1.21925e+07 と出力されてしまいます。std::fixedstd::setprecision を用いることで正確な表記になります。

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
  int A, B;
  cin >> A >> B;
  // std::fixed -> 固定小数点で出力することを指定
  // std::setprecision(int n) -> 小数点以下 n 桁で出力することを指定
  cout << fixed << setprecision(2);
  cout << A * B / 100.0 << '\n';
  return 0;
}

posted:
last update: