ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

三井住友信託銀行プログラミングコンテスト2019 B - Tax Rate

こたつで寝落ちする回数が増えてきました、ねむーです。

今回はAtCoder(https://atcoder.jp/contests/sumitrust2019/tasks/sumitb2019_b)にて開催されました、三井住友信託銀行プログラミングコンテスト2019 B問題「B - Tax Rate」の問題と僕との戦闘記です。

0.はじめに

今回も、プログラミング言語C#を使用しています。

1.問題文

高橋君は ABC 洋菓子店でアップルパイをひとつ買い、そのとき N 円を支払ったことを覚えています。

この店で食料品を購入する際には 8 パーセントの消費税が課されます。すなわち、税抜価格 X 円のアップルパイを買う際には X × 1.08 円 (小数点以下切り捨て) を支払わなければなりません。

高橋君はアップルパイの税抜価格 X を忘れてしまい、これを知りたくなりました。 N を入力として X を求めるプログラムを書いてください。なお、 X は整数とします。

ただし、考えられる税抜価格が複数存在する場合はそのうちのいずれか 1 つを求めてください。また、高橋君が支払った金額 N を覚え間違えている可能性もあるので、アップルパイの税抜価格として考えられるものが存在しない場合はその旨を報告してください。

2.制約

  • 1 ≤ N ≤ 50000
  • N は整数

3.入力例

  • 入力
1079
  • 出力
:(

4.初見の感想

  • ×1.08や÷1.08をすると小数点以下の値が出る
  • 入力値を÷1.08して小数点切り捨てし元の数を計算、×1.08して入力値に戻るかどうかを判定する

5.学びポイント

  • Math.Floor関数を使うと小数点の切り捨てができる
  • Math.Roundで四捨五入できる

6.コードと簡単な解説

using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
    static void Main(string[] args)
    {
        int N = int.Parse(Console.ReadLine());
        double temp = N / 1.08;
        double Ans = Math.Round(temp);
        if (N == Math.Floor(Ans * 1.08)) { Console.WriteLine(Ans); }
        else { Console.WriteLine(":("); }
    }
}

7.最後に

初めて四捨五入などを使ったので勉強になりました