Problem R: ツンデレチェッカー

ツンデレとは,「普段は澄ましたツンとした態度をとるが,意中の人などと2人となると急にデレっとしたかわいい態度をとるようなキャラクター」のことを指すスラングである.

あなたはツンデレなキャラクターが好きで好きでたまらないので,ついうっかり「キャラクター名を受け取ったらそのキャラクターがツンデレかどうかを判断するプログラム」を書こうとしてしまった.

注意: この問題は,誤答を送信する練習を行うために用意された問題であり,正しく解かれることを想定した問題ではない.「べっ,別にあんたに解いてもらいたくて用意したんじゃないんだからね!」

Input

先頭の行にデータセットの数 N (0 < N ≤ 20) が与えられる.以降の N 行にそれぞれのデータセットが続く.

それぞれのデータセットは,漫画・アニメ等のキャラクターの英語表記の名前のみを含む1行の文字列からなる.それぞれの名前は100文字以下であると仮定してよい.名前には空白文字が含まれうることに注意せよ.

Output

それぞれのデータセットについて1行の出力を行え.データセットで与えられたキャラクターがツンデレならば “yes”,そうでなければ “no” という文字列を出力せよ.

Sample Input

2
Nagi Sanzen'in
Isumi Saginomiya

Output for Sample Input

yes
no

解答例

以下に C, C++, Java によるこの問題の不完全な解答例を示す.

C

#include <stdio.h>
#include <string.h>

int main(void)
{
    int cases, i;
    char name[102];

    scanf("%d", &cases);
    fgets(name, 102, stdin);
    for (i = 0; i < cases; ++i) {
        fgets(name, 102, stdin);
        if (memcmp(name, "Nagi ", 5) == 0) puts("yes");
        else puts("no");
    }
    return 0;
}

C++

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int cases;
    string name;
    cin >> cases;
    getline(cin, name);
    for (int i = 0; i < cases; ++i) {
        getline(cin, name);
        if (name.substr(0, 5) == "Nagi ") cout << "yes\n";
        else cout << "no\n";
    }
    return 0;
}

Java

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int cases = sc.nextInt();
        sc.nextLine();
        for (int i = 0; i < cases; ++i) {
            String name = sc.nextLine();
            if (name.startsWith("Nagi "))
                System.out.println("yes");
            else
                System.out.println("no");
        }
    }
}

東京大学プログラミングコンテスト 2008
Problemsetter: Yuta Kitamura