Форум программистов, компьютерный форум CyberForum.ru

Задача "Чудесное поле" - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Сергей2000
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 28
23.10.2013, 10:39     Задача "Чудесное поле" #1
2.1. Чудесное поле

Входной файл input.txt
Выходного файл output.txt
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 МБ
Сбылась заветная мечта Илюши! Он попал на свою самую любимую телепередачу — игру «Чудесное поле».
Суть игры заключается в том, чтобы угадать номер сектора, на котором остановится стрелка на барабане. Барабан представляет собой окружность, разбитую на N одинаковых секторов, пронумерованных по часовой стрелке числами от 1 до N. В центре этой окружности находится стрелка. Изначально стрелка показывает на сектор номер 1. В начале игры стрелка мгновенно начинает крутиться со случайной скоростью.
У Илюши очень наметанный глаз. Он сразу может определить, сколько секторов преодолеет стрелка (начиная с 1 сектора). Илюше, чтобы победить в этой игре, нужно раньше других участников сказать, на какой сектор она будет показывать, когда остановится. Помогите ему выиграть.
Формат входных данных:
Во входном файле задано два целых числа N и K (1 ≤ N, K ≤ 1018) — количество секторов на барабане и количество секторов, которое преодолеет стрелка прежде чем остановиться.
Формат выходных данных:
В выходной файл выведите одно число — номер сектора, на котором остановится стрелка.
Пример
input.txt output.txt
1 1 1
10 5 6
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
23.10.2013, 10:55     Задача "Чудесное поле" #2
Сергей2000, читайте правила( в каждой теме решается лишь одна задача. Во вторых ожидаем код и что у вас конкретно не получается. Или вы хотели заказать эти программы?
Сергей2000
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 28
23.10.2013, 11:17  [ТС]     Задача "Чудесное поле" #3
1 задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
 
 
int main(void) {
  int s[40000]; // создаем массив, подходящий рамкам условия;
  int N,i,j,k,n; //N-количество элементов массива;i,j-счетчики; k-длина сектора, совмещенный с счетчиком в паре // условий;
  freopen("input.txt","r",stdin);  //
  freopen("output.txt","w",stdout);// это не обязательно;
  k=n=0;//инициализируем
  
  scanf("%d",&N); //считываем кол-во элментов;
   for(i=0;i<N;i++) 
    scanf("%d",s+i);//инициализируем массив;
   
      
  for(j=1;j<N-2;j++) {                           //с помощью цикла находим расположение последнего сектора
 /*берем  первый элемент массива и с помощью него находим последний сектор.после этого цикла идет проверка на то что последний элемент полученного сектора конец массива. Если сектор 5 элементов, первые пять будут равняться последним пяти.  При всем этом 0+k не равно j-элементу, чтобы эта проверка не ушла дальше него, ведь в этом нет смысла.*/
        while ((s[0+k]==s[j+k])&&(k!=j)) {   k++;
    }
    if(j==(N-k-1)) {         //если последний элемент сектора равен концу массива
      printf("%d\n",k);    //то все верно, иначе обнуляем k и повторяем все заново
      return 0;
      }
    else k=0;
  }
    
  for(j=1;j<N-2;j++)  // это все если k=0, а значит в массиве один сектор или все элементы равны, а
    if(s[0]==s[j]) //а так как нужно взять наименьший сектор то берем единиццу, в противном случае размер массива минус один.
      n++;
  if(n==(N-3))
    printf("1\n");
  else
    printf("%d\n",(N-1));
  return 0;
}
код работает,но в примере видно что если ввести 1 1 10 5 будет 1 6, но при вводе в input 1 1 10 5, в output 0
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
23.10.2013, 11:19     Задача "Чудесное поле" #4
используйте выделение кода, такой код - нечитабельный вообще
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:20     Задача "Чудесное поле" #5
Используйте теги
Код
[CPP] и [/CPP]
при вставке кода.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 11:26     Задача "Чудесное поле" #6
У меня вот сразу такой вопрос: по условиям 1-й задачи во входном файле всего 2 числа: N - количество секторов, K - количество пройденных секторов. В выходном файле всего 1 число - номер сектора, на который попадает стрелка. Вопрос: Что такое
1 1 1
10 5 6
?
Вопрос 2: Если во входном файле таки 2 числа, а в выходном 1, зачем нужно все то, что написанно в коде? Очевидно же, что стрелка остановится на поле с номером K % N
Сергей2000
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 28
23.10.2013, 11:29  [ТС]     Задача "Чудесное поле" #7
Мимино,
input
1 1
10 5
output
1
6
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:34     Задача "Чудесное поле" #8
Мимино,
Цитата Сообщение от Мимино Посмотреть сообщение
K % N
Скорее (K%N)+1, с исключением варианта, когда только 1 поле.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 11:35     Задача "Чудесное поле" #9
Цитата Сообщение от Сергей2000 Посмотреть сообщение
Мимино,
input
1 1
10 5
output
1
6
То есть во входном файле может быть несколько пар чисел, верно? Тогда сколько их?

Добавлено через 54 секунды
Цитата Сообщение от Rivory Посмотреть сообщение
Скорее (K%N)+1, с исключением варианта, когда только 1 поле.
Угу... ошибка +-1 у меня присутствует, но это сейчас не столь важно.
Сергей2000
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 28
23.10.2013, 11:36  [ТС]     Задача "Чудесное поле" #10
Мимино, да,2 пары
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 11:39     Задача "Чудесное поле" #11
Цитата Сообщение от Сергей2000 Посмотреть сообщение
Мимино, да,2 пары
5-10 минут, сейчас сделаю.
Сергей2000
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 28
23.10.2013, 11:40  [ТС]     Задача "Чудесное поле" #12
Мимино, спасибо!!!!!!!!!!!!!!
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 12:02     Задача "Чудесное поле" #13
Вот на С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <fstream>
using namespace std;
 
void createFile();
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char choise = 'y';
 
    cout << "Создать файл с входными данными? (y/n): ";
    cin >> choise;
    
    if (choise == 'y' || choise == 'Y')
        createFile();
 
    ofstream outFile("output.txt", ios::out);
    if (!outFile)
        cerr << "Файл не может быть открыт" << endl;
 
    ifstream inFile("input.txt", ios::in);
    if (!inFile)
        cerr << "Файл не может быть открыт" << endl;
 
    int N, K;
    inFile >> N >> K;
 
    while (!inFile.eof())
    {
        outFile << (K % N) + 1 << endl;
        inFile >> N >> K;
    }
 
    outFile.close();
    inFile.close();
 
    system("pause");
    return 0;
}
 
 
void createFile()
{
    ofstream outFile("input.txt", ios::out);
 
    if (!outFile)
        cerr << "Файл не может быть открыт" << endl;
 
    int N, K;
 
    for (int i = 0; i <= 1; i++)
    {
        cout << "Введите количество секторов: ";
        cin >> N;
        cout << "Введите количество пройденных секторов: ";
        cin >> K;
        cout << endl;
        outFile << N << ' ' << K << endl;
    }
 
    outFile.close();
}
VitaminD2
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 13
23.10.2013, 12:11     Задача "Чудесное поле" #14
Цитата Сообщение от Мимино Посмотреть сообщение
Вот на С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <fstream>
using namespace std;
 
void createFile();
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char choise = 'y';
 
    cout << "Создать файл с входными данными? (y/n): ";
    cin >> choise;
    
    if (choise == 'y' || choise == 'Y')
        createFile();
 
    ofstream outFile("output.txt", ios::out);
    if (!outFile)
        cerr << "Файл не может быть открыт" << endl;
 
    ifstream inFile("input.txt", ios::in);
    if (!inFile)
        cerr << "Файл не может быть открыт" << endl;
 
    int N, K;
    inFile >> N >> K;
 
    while (!inFile.eof())
    {
        outFile << (K % N) + 1 << endl;
        inFile >> N >> K;
    }
 
    outFile.close();
    inFile.close();
 
    system("pause");
    return 0;
}
 
 
void createFile()
{
    ofstream outFile("input.txt", ios::out);
 
    if (!outFile)
        cerr << "Файл не может быть открыт" << endl;
 
    int N, K;
 
    for (int i = 0; i <= 1; i++)
    {
        cout << "Введите количество секторов: ";
        cin >> N;
        cout << "Введите количество пройденных секторов: ";
        cin >> K;
        cout << endl;
        outFile << N << ' ' << K << endl;
    }
 
    outFile.close();
}
показывает что не правильная компиляция..
Сергей2000
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 28
23.10.2013, 12:13  [ТС]     Задача "Чудесное поле" #15
Мимино, если не сложно решите 3 задачи по ссылкам
Задача "Сновидения"
Задача "Воздушный шар 2"
Задача "Соревнование"
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 12:13     Задача "Чудесное поле" #16
Цитата Сообщение от VitaminD2 Посмотреть сообщение
показывает что не правильная компиляция..
В каком месте? Что за ошибка?
VitaminD2
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 13
23.10.2013, 12:16     Задача "Чудесное поле" #17
Цитата Сообщение от Мимино Посмотреть сообщение
В каком месте? Что за ошибка?
какая версия с++ именно?
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
23.10.2013, 12:19     Задача "Чудесное поле" #18
Цитата Сообщение от VitaminD2 Посмотреть сообщение
какая версия с++ именно?
5-я!!
VitaminD2
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 13
23.10.2013, 12:25     Задача "Чудесное поле" #19
Цитата Сообщение от Мимино Посмотреть сообщение
В каком месте? Что за ошибка?
Idleness limit exceeded) – Программа продолжительное время ничего не делала. Скорее всего программа пыталась считать с клавиатуры, либо произошла критическая ошибка в проиложении для операционной системы DOS;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 12:40     Задача "Чудесное поле"
Еще ссылки по теме:

C++ Класс "Человек", информация о поле: char или int?
C++ Задачка в стиле "Поле чудес"
Что значит "в поле шириной 10 символов"? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ya_noob
_
200 / 144 / 9
Регистрация: 08.10.2011
Сообщений: 432
23.10.2013, 12:40     Задача "Чудесное поле" #20
Цитата Сообщение от VitaminD2 Посмотреть сообщение
Idleness limit exceeded) – Программа продолжительное время ничего не делала. Скорее всего программа пыталась считать с клавиатуры, либо произошла критическая ошибка в проиложении для операционной системы DOS;
а вы что пытались засунуть этот код в проверяющую систему?
Yandex
Объявления
23.10.2013, 12:40     Задача "Чудесное поле"
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru