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

Районная олимпиада по программированию 2011-12 (ошибка!) - C++

Восстановить пароль Регистрация
 
user-men
22 / 22 / 8
Регистрация: 17.02.2014
Сообщений: 300
08.06.2014, 22:57     Районная олимпиада по программированию 2011-12 (ошибка!) #1
Похоже что я нашел ошибку помогите мне подтвердив ее или опровергнуть
вот задача !
Для иллюстрации метода математической индукции в учебниках времен СССР всегда приводилась следующая задача: «Доказать, что любую целую сумму денег, начиная с 8 руб., Можно без сдачи разменять купюрами по 3 и 5 руб.». Вам не нужно ничего доказывать, а необходимо просто написать программу, которая для двух типов купюр по Х и Y денежных единиц определяла бы, какую наибольшую сумму денег невозможно разменять этими купюрами, если Х и Y - взаимно простые натуральные числа.

Тести до задачі “CHANGE”

№тесту____Вхідні_дані______Результат_______Оцінка_________________________________________________________
1_________3_5_____________7______________2_бали_________________________________________________________
2_________1_73____________0______________7_балів________________________________________________________
3_________24_17___________367____________7_балів________________________________________________________
4_________999_1001________994999_________7_балів________________________________________________________
5_________46342_46341_____2147441939_____7_балів________________________________________________________

999 и 1001 у меня получилось 997999

сайт олимпиады - http://osvita-tomakivka.dp.ua/zavdan...rogramuvannja/

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
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//1 do 46342
#include <iostream>
#include <conio.h>
using namespace std;
 
const double MAX = 999;
long int x, y;
double mas;
 
inline bool oneone(double k)
{
    double X;
    X = x;
    for (double i = 0; i < MAX; i++)
    {
        if (X == k)
        {
            return 1;
        }
        if (X > k)
            break;
        X += x;
    }
    return 0;
}
 
inline bool twotwo(double k)
{
    double Y;
    Y = y;
    for (double i = 0; i < MAX; i++)
    {
        if (Y == k)
        {
            return 1;
        }
        if (Y > k)
            break;
        Y += y;
    }
    return 0;
}
 
inline bool onetwo(double k)
{
    double X, XX, i;
    X = x;
    XX = x;
    Pochtok :
    for (i = 0; i < MAX; i++)
    {
        if (X == k)
        {
            return 1;
        }
        if (X > k)
            break;
        X += y;
    }
    if (XX >= MAX || XX > k)
    return 0;
    XX += x;
    X = XX;
    goto Pochtok;
}
 
inline bool twoone(double k)
{
    double Y, YY, i = 0;;
    Y = y;
    YY = y;
    Pochtok :
    for (i = 0; i < MAX; i++)
    {
        if (Y == k)
        {
            return 1;
        }
        if (Y > k)
            break;
        Y += x;
    }
    if (Y >= MAX || YY > k)
    return 0;
    YY += y;
    Y = YY;
    goto Pochtok;
}
 
int main()
{
    double m = 0;
    bool k;
    cout << "Enter X ->";
    cin >> x;
    cout << "Enter Y ->";
    cin >> y;   
    long int i;
    if (x > y)
        i = x;
    else
        i = y;
    if (x <= 0 || x > 46342 || y <= 0 || y > 46342)
    {
        cout << "Erorr (1 do 46342)";
        getch();
        return 0;
    }
    for (; i < MAX; i++)
    {
        if (x % 2 == 0 && i % 2 == 0)
        {
            k = oneone(i);
            if (k == 1)
                continue;
        }
        if (y % 2 == 0 && i % 2 == 0)
        {
            k = twotwo(i);
            if (k == 1)
                continue;
        }
        k = onetwo(i);
        if (k == 1)
            continue;
        k = twoone(i);
        if (k == 1)
            continue;
        mas=i;
    }
    cout <<"Max number = "<< mas;
    getch();
    return 0;
}
2 программа
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    long int x, y, Suma;
    cout << "Enter X ->";
    cin >> x;
    cout << "Enter Y ->";
    cin >> y;
    if (x <= 0 || x > 46342 || y <= 0 || y > 46342)
    {
        cout << "Erorr (1 do 46342)";
        getch();
        return 0;
    }
    Suma = (x*y) - (x + y);
    if (Suma>0)
    cout <<"Mix sum = "<< Suma;
    else
        cout <<"Mix sum = 0";
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 22:57     Районная олимпиада по программированию 2011-12 (ошибка!)
Посмотрите здесь:

Какая книга по программированию обьясняет все с математикой и подробно излагает все темы?По программированию? C++
C++ Олимпиада 1999г.
Олимпиада C++
Международная олимпиада по программированию 1994г. Задач "Матрица простых чисел". C++
Олимпиада по программированию C++
C++ Школьная олимпиада
Олимпиада по информатике C++
прошедшая олимпиада 14-16.12.13 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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