トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

No.56 消費税

■■■問題■■■

ある国の通貨単位は「ユキコダ」である。
いまからDユキコダの品物を買おうとしている?
しかし、品物の金額に対して消費税率P%の消費税が加算される。
実際に支払う金額はいくらか?
ただし、小数点以下は切り捨てします。

■■■入力■■■

D P

Dは買おうとしている消費税を含まない品物の金額。1 <= D <= 10の7乗 (Dは正の整数)
Pはこの国の消費税率。 0 <= P <= 100(Pは整数)

■■■出力■■■

消費税を考慮した実際に支払う金額を1行で出力せよ。
ただし、最後に改行を忘れずに。


C#のソース

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static string InputPattern = "Input1";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("100 8");
            //108
            //100ユキコダの商品に消費税率8%の消費税が適応される。
            //消費税は100*0.08=8ユキコダなので、実際に支払う金額は108ユキコダになる。
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("10 8");
            //10
            //10ユキコダの商品に消費税率8%の消費税が適応される。
            //消費税は10*0.08=0.8ユキコダなので、計算上支払う金額は10.8ユキコダになる。
            //ただし、小数点以下は切り捨てなので0.8は切り捨てて10ユキコダが答えになる。
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("123 10");
            //135
        }
        else if (InputPattern == "Input4") {
            WillReturn.Add("25 16");
            //29
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        decimal[] wkArr = InputList[0].Split(' ').Select(X => decimal.Parse(X)).ToArray();
        decimal D = wkArr[0];
        decimal P = wkArr[1];
        Console.WriteLine(Math.Truncate(D + D * P / 100));
    }
}


解説

精度の高いDecimal型を使ってます。
MSDN --- Decimal型