Решение задачи Поле чудес с Acmp

Без пояснения   Просмотров: 54


Для игры в «Поле чудес» используется круглый барабан, разделенный на сектора, и стрелка. В каждом секторе записано некоторое число. В различных секторах может быть записано одно и то же число. Однажды ведущий игры решил изменить правила. Он сам стал вращать барабан и называть игроку (который барабана не видел) все числа подряд в том порядке, в котором на них указывала стрелка в процессе вращения барабана. Получилось так, что барабан сделал целое число оборотов, то есть последний сектор совпал с первым. После этого, ведущий задал участнику вопрос: какое наименьшее число секторов может быть на барабане? Требуется написать программу, отвечающую на этот вопрос ведущего.

Код

#include <iostream>
using namespace std;
int *a;
int n;
bool check(int s)
{
    int i = 0;
    while((a[i] == a[i % s]) && (i < n))
        i++;
    if(i == n)
        return true;
    else
        return false;
}
int main() {
    cin >> n;
    a = new int [n];
    for(int i = 0; i < n; ++i)
        cin >> a[i];
    n--;
    int r = n;
    for(int i = 1; i < n; ++i){
        if(!(n % i)){
            if(check(i)){
                r = i;
                break;
            }
        }
    }
    cout << r;
    delete [] a;
    return 0;
}

         

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



Комментарии

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