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

Небольшой баг - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структура. http://www.cyberforum.ru/cpp-beginners/thread572531.html
Добрый вечер..пишу уже 3 раз=) Я сделал задание По умолчанию Картотека в бюро обмена квартир (связные списки, файлы и т.д.) Всем Здрасьте) Вот задание:Картотека в бюро обмена квартир организован как линейный список. Сведения о каждой квартире содержат: количество комнат; этаж;
C++ Из 2ой в 10ую Помогите, никак не догоню Задано неотрицательное целое число в двоичной системе счисления. Требуется перевести его в десятичную. Ввод В первой строке содержится исходное число не более чем из 50 000 цифр 0 и 1 без ведущих нулей. Вывод Вывод должен содержать это число в десятичной системе счисления без ведущих нулей. Ввод http://www.cyberforum.ru/cpp-beginners/thread572497.html
C++ Разделить строку на две подстроки.
Доброго времени суток.. В задании необходимо разбить исходную строку на две подстроки, при этом первая длиной k символов (если на k-ю позицию попадает слово, то его следует отнести ко второй строке). Вот, что вышло у меня: #include "stdafx.h" #include <iostream> #include <cstdlib> #include <string.h> using namespace std; int main()
C++ Функция не берёт значение переменной из программы
Короче функция игнорирует переменные из программы. (переменные глобальные) вот код //#include <cstdlib> #include <iostream> #include <graphics.h> #include <stdio.h> #include <stdlib.h> using namespace std; char Metka;
C++ Найти минимальное количество символов, по которым можно сравнивать слова в предложении. http://www.cyberforum.ru/cpp-beginners/thread572424.html
Подскажите, с кодом. Задача: найти минимальное количество символов, по которым можно сравнивать слова в предложении. #include <iostream> using namespace std; int main() { int p = 1, k = 1; char s ;
C++ Описать процедуру Mean(X, Y, AMean), вычисляющую среднее арифметическое двух положительных чисел Описать процедуру Mean(X, Y, AMean), вычисляющую среднее арифметическое AMean = (X + Y)/2 двух положительных чисел X и Y (X и Y — входные, AMean и GMean — выходные параметры вещественного типа). С помощью этой процедуры найти среднее арифметическое и среднее геометрическое для пар (A, B), (A, C), (A, D), если даны A, B, C, D. Код на Паскале: procedure Mean(x,y:real; var AMean,GMean:real);... подробнее

Показать сообщение отдельно
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595

Небольшой баг - C++

12.05.2012, 21:21. Просмотров 362. Ответов 3
Метки (Все метки)

Дана очень простая задачка:

Даны числа a0, X, Y, M. Рассмотрим бесконечную последовательность ai = (X * ai-1 + Y) mod M, где операция "a mod b" означает остаток от деления числа a на число b.
Очевидно, что начиная с некоторой позиции, эта последовательность зацикливается. Ваша задача -- найти длину цикла, и количество первых элементов этой последовательности, которые не входят в цикл.
Входные данные
Входные данные состоят из чисел a0, X, Y, M (0 ≤ a0, M, Y ≤ 1012, 0 ≤ X ≤ 106).
Выходные данные
Выведите два числа — длину цикла и количество первых элементов последовательности, которые не входят в цикл. Гарантируется, что оба этих числа не превосходят 800000.


Пример ввода: 0 2 3 4
Ответ на пример(вывод): 1 2
Комментарий
Последовательность выглядит следующим образом: 0, 3, 1, 1, 1,....


ограничение времени на тест: 5 seconds
ограничение памяти на тест: 256 megabytes
ввод: standard
вывод: standard


__________________________

На мой взгляд решение - тривиально.Просто необходимо узнать когда элемент попадётся 1-й 2-й 3-й раз, тогда на 3-й = выход , количество элементов попавшихся 2 раза = период 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
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <fstream>
#include <algorithm>
#include <utility>
#include <stdio.h>
#include <conio.h>
#include <cmath>
using namespace std;
int main(){
    map <int,int> mas;
    int a,x,y,m;
    cin>>a>>x>>y>>m;
    while (1){
        if (mas[a]==2) break;
        if (mas[a]==1) mas[a]=2;else mas[a]=1;
        a=((x*a)+y)%m;
    };
    int fl=0,cycle=0;
    for (map <int,int>::iterator i=mas.begin();i!=mas.end();i++){
        if (i->second==1) fl++;
        if (i->second==2) cycle++;
    };
    cout<<cycle<<" "<<fl;  
    return 0;
}
Проблема : Result - 8/25 Проходит 8 из 25 тестов и ошибка именно в ответе (числах) (WA)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru