Решение задачи Questions с Timus

С пояснением   Просмотров: 45


Holding a collegiate programming contest is a very exhausting work. There is a well-known proverb that one fool can ask so many questions that a hundred clever men will not answer. And during a collegiate programming contest questions are asked by one hundred clever people.
The jury of the Third Urals Collegiate Programming Contest being clever enough has found a simple way to make its work easier. We have invented a simple algorithm that will help us answer ALL your numerous questions! Moreover, this algorithm guarantees that the same questions will have the same answers (this would be hardly possible if we undertake such a task ourselves). According to this algorithm a member of the jury starts to delete characters of the question in the following order:
Starting from the first character he or she counts out N−1 characters (spaces, punctuation marks etc. are considered to be characters too) and deletes the Nth character.
If a string ends the count continues from the beginning of the string.
After deleting a character the count restarts from the character that would be the (N+1)-st in the previous count.
If the last remaining character is a question-mark ("?") then the answer to the question is "Yes". If it is a space then the answer is "No". Any other character will lead to "No comments" answer.
You should help the jury and write a program that will do a hard work of answering your questions tomorrow. The number N is secret and will not be announced even after the end of the contest. Your program should use N = 1999.
For example, taking a string "Is it a good question?" (its length is 22) the characters will be counted in the following way: "Is it a good question?Is it … quest" and "i" will be deleted. Then the count restarts from "on?Is it…" etc., until "s" will be left (thus the answer is "No comments", as usual).

Проведение студенческого конкурса по программированию - очень утомительная работа. Существует известная пословица, что один дурак может задать столько вопросов, что сотня умных людей не ответит. А во время студенческого конкурса по программированию вопросы задают сто умных людей.
Жюри Третьего Уральского студенческого соревнования по программированию, которое было достаточно умным, нашло простой способ облегчить его работу. Мы изобрели простой алгоритм, который поможет нам ответить на ВСЕ ваши многочисленные вопросы! Более того, этот алгоритм гарантирует, что одни и те же вопросы будут иметь одинаковые ответы (это вряд ли возможно, если мы сами выполним такую ​​задачу). Согласно этому алгоритму член жюри начинает удалять символы вопроса в следующем порядке:
Начиная с первого символа, он или она отсчитывает N - 1 символов (пробелы, знаки препинания и т. Д. Тоже считаются символами) и удаляет N-й символ.
Если строка заканчивается, счет продолжается с начала строки.
После удаления символа счет возобновляется с символа, который будет (N + 1) -ым в предыдущем счете.
Если последний оставшийся символ - знак вопроса («?»), То ответ на вопрос «Да». Если это пробел, то ответ «Нет». Любой другой персонаж приведет к ответу «Без комментариев».
Вы должны помочь жюри и написать программу, которая сделает тяжелую работу, чтобы ответить на ваши вопросы завтра. Число N является секретным и не будет объявлено даже после окончания конкурса. Ваша программа должна использовать N = 1999.
Например, взять строку "Это хороший вопрос?" (его длина составляет 22) символы будут подсчитаны следующим образом: «Это хороший вопрос? Это ... квест» и «i» будут удалены. Затем отсчет перезапускается с «on? Это ...» и т. Д., Пока не останется «s» (таким образом, ответ «Без комментариев», как обычно).

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    getline(cin, s);
    int pos = 0, n = 1998;
    while (s.size() > 1) {
        pos += n;
        pos %= s.size();
        s.erase(pos,1);
    }
    if(s[0] == '?')
        cout << "Yes";
    else if(s[0] == ' ')
        cout << "No";
    else
        cout << "No comments";
    return 0;
}

         

Администратор Photo Автор: Администратор


Решение частичное


Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться