頭良くなりたい人

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

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

問題はこちら
atcoder.jp

指針

こういう小数の処理にはかなり苦手意識があります。
とりあえず N / 1.08 で仮の X を出しておいて,その X で逆算してうまく行かなければ X+1X-1 を試してます。
センスがないコードでごめんなさい。

コード

#include <bits/stdc++.h>
using namespace std;
 
int main(){
    int n;
    cin>>n;
    
    int x;
    x = n / 1.08;
 
    int n_p1=x*1.08;
    int n_p2=(x+1)*1.08;
    int n_p3=(x+1)*1.08;
 
    if(n_p1==n){
        cout<<x<<endl;
    }else if(n_p2==n){
        cout<<x+1<<endl;
    }else if(n_p3==n){
        cout<<x-1<<endl;
    }else{
        cout<<":("<<endl;
    }
}