愛媛県宇和島市 みんなのパソコン教室 代表の松井です
高校の授業「情報」の中の「プログラミング」と「アルゴリズム」の学習に最適な競技プログラミングの紹介です。
※提出結果が正解になったコードを掲載しております。
※他にも効率の良いコーディングはあります。ご自身で検証してください
https://atcoder.jp/contests/abc158/tasks/abc158_c
問題文
消費税率が 8 %のとき A 円、10 %のとき B円の消費税が課されるような商品の税抜き価格を求めてください。
ただし、税抜き価格は正の整数でなければならないものとし、消費税の計算において小数点以下は切り捨てて計算するものとします。
条件を満たす税抜き価格が複数存在する場合は最も小さい金額を出力してください。また、条件を満たす税抜き価格が存在しない場合は -1
と出力してください。
制約
- 1≤A≤B≤100
- A,B は整数である
解答例
Python (CPython 3.11.4)
def taxcalc(price,rate):
tax = int(price * rate)
return tax
A,B = map(int,input().split())
for i in range(1,1001):
if taxcalc(i,0.08) == A and taxcalc(i,0.1) == B:
ans = i
break
else:
ans = -1
print(ans)
解説
商品価格(税抜き)と税率を引数に渡すことで消費税額を返す関数を作ります。消費税の計算において小数点以下は切り捨てる条件なのでint関数で丸めます。
制約にB(税率10%のときの消費税額)は100以下とあるので商品価格(税抜きは)MAX1000円。
1~1000までの数字を全探索で、0.08かけた数字が変数Aと等しくなる かつ 0.1かけた数字が変数Bと等しくなる数字を探します。
「条件を満たす税抜き価格が複数存在する場合は最も小さい金額を出力」なので最初に条件に一致するものが見つかった時点で変数ansにiを代入しループを抜けます。
ループして全探索した結果、当てはまるものがなかったらansに-1を代入します。
変数ansを表示します。
宇和島市の中高校生向けのプログラミングはこちらから
宇和島ウエノマチハックスタジオ プログラミング部
宇和島市の小学生向けのプログラミングはこちらから
みんなのパソコン教室宇和島本校 ジュニアプログラミング講座