はまやんはまやんはまやん

hamayanhamayan's blog

永遠の17歳 [yukicoder 395]

問題

http://yukicoder.me/problems/no/395

X進数表記の17を10進数に直した時にAとなるXを求めよ。
制約に合うXが無ければ"-1"を出力する。

2 <= X
0 <= A <= 100

考察

1. 進数についての基礎知識がないと辛いかも知れない
2. X進数の17は10進数に直すと X + 7
3. X + 7 = A なので、X = A - 7

4. これが答えだが、いくつか制約があるのでそれをチェックして、制約に合わないなら"-1"を吐く
5. まず、2 <= Xである必要がある
6. それと、X進数表記で17、つまり、数字の7が使えるということは、8進数以上であることも制約に加わる
7. そのため、8 <= X という制約を満たす必要がある

実装

http://yukicoder.me/submissions/103832

int A;
//-----------------------------------------------------------------
int main() {
    cin >> A;
    
    int X = A - 7;
    if (X < 8)
        cout << -1 << endl;
    else
        cout << X << endl;
}