けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 216 A - Signed Difficulty (灰色, 100 点)

これは C++ よりも C で書いた方が楽かもしれない!

問題概要

"15.3" のような形式で、小数点第一位まで示された小数が与えられる。

  • 小数第一位の値が 0 以上 2 以下ならば、整数部分に "-" をつけて(たとえば "15-")
  • 小数第一位の値が 3 以上 6 以下ならば、整数部分をそのまま (たとえば "15")
  • 小数第一位の値が 7 以上 9 以下ならば、整数部分に "+" をつけて (たとえば "15+")

出力せよ。

解法

与えられた入力を「整数部分」と「小数部分」とにパースする部分が難しいかもしれない。言語によって書き方は変わると思われるが、C 言語ならば、次のように書ける。

int X, Y;
scanf("%d.%d", &X, &Y);

この処理によって、X は整数部分の値、Y は小数第一位の値を表すようになる。

あとは、if 文を用いて、Y の値に応じて適切に出力すればよい。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int X, Y;
    scanf("%d.%d", &X, &Y);
    if (Y <= 2)
        printf("%d-\n", X);
    else if (Y <= 6)
        printf("%d\n", X);
    else
        printf("%d+\n", X);
}