頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

三井住友信託銀行プログラミングコンテスト2019 C - 100 to 105

問題はこちら atcoder.jp

方針

X 円ちょうどの買い物をできるならば,買う品物の数は Q 個(QX/100 の商) とできます1

Q 個の商品による合計金額 S100Q \leq S \leq 105Q なので,X がこの範囲に含まれているかを判定すればよいです。コード中では余り R を用いてやや工夫しています。

解説PDF では3種類の解法が紹介されています。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    int x;
    cin>>x;
 
    int q=x/100;
    int r=x%100;
 
    cout<<(r<=q*5)<<endl;
}

  1. (i)買う品物の数が Q+1 個以上のとき,合計金額 S は,S \geq 100(Q+1) > 100(X/100) = XQ \leq {X/100} < Q+1 より)となり,X 円にすることはできません。(ii)買う品物の数が Q-1 以下のときは少し複雑です。仮に Q-1 個の合計金額を X 円にできるとすると,Q \geq 20 です。このとき, X \geq 20Q = 2000 ですが,X2000 以上のときは,Q 個の商品によっても合計金額を X 円にすることができます(確認してみてください)。以上より,買う品物の数を Q 個として問題ありません。