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

Олимпиадная задача на числа - C++

Восстановить пароль Регистрация
 
22032203
Сообщений: n/a
14.01.2010, 16:39     Олимпиадная задача на числа #1
Условие задачи:
Задано 121 натуральне число : 1...121 .Разбить числа в 11 групп так,чтобы каждая группа вмещала 11 чисел,каждое число принадлежало только 1 группе,сумма чисел в каждой группе была одинаковой.

прога нужна на с++ ... заранее большое спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2010, 16:39     Олимпиадная задача на числа
Посмотрите здесь:

Олимпиадная задача C++
C++ Олимпиадная задача
Олимпиадная задача C++
Задача на дп (олимпиадная) C++
C++ Олимпиадная задача
Олимпиадная задача. Деревни C++
C++ C++. Олимпиадная задача
Сладкая олимпиадная задача C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.01.2010, 22:57     Олимпиадная задача на числа #2
а веть это тоже самое что и построить магический квадрат!

Добавлено через 1 минуту
щас сделаю

Добавлено через 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
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
#include <iostream>
#include <conio.h>
 
int main()
{
     unsigned short size=0;
     std::cout<<"vvedite razmernost kvadrata: ";
     std::cin>>size;
     if (!(size & 1)) {
         std::cout<<"razmernost kvadrata dolgna imet ne4etyu velichiny";
         getch();
         exit(0);
     }
     unsigned int max_size=size+(size-1);
     unsigned int**pMagic_square;
     pMagic_square=new unsigned int*[max_size];
     for (unsigned int i=0; i<max_size; i++)
     pMagic_square[i]=new unsigned int[max_size];
     unsigned int i;
     unsigned int j;
     for (i=0; i<max_size; i++)
     for (j=0; j<max_size; j++)
     pMagic_square[i][j]=0;
     unsigned int k=1;
     i=(max_size>>1);
     j=0;
     while (i<max_size){
         unsigned int i1=i;
         unsigned int j1=j;
         unsigned int gr=size>>1; //gr-расстояние от границы увеличенного массива
         while (j1<((j+(max_size>>1))+1)){
             pMagic_square[i1][j1]=k;
             if ((i1>(gr)) && (j1<(gr))) //left
             pMagic_square[i1][j1+size]=k;
             if ((i1>(size+gr)-1) && (j1>(gr)))
             pMagic_square[i1-size][j1]=k; //down
             if ((i1<(gr)) && (j1>(gr)))
             pMagic_square[i1+size][j1]=k; //up
             if ((i1>(gr)) && (j1>(size+gr)-1))
             pMagic_square[i1][j1-size]=k; //right
             i1--;
             j1++;
             k++;
         }
         i++;
         j++;
     }
     std::cout<<std::endl<<"Magic kvadrat gotov: "<<std::endl<<std::endl;
     for (i=(size-1)>>1; i<=max_size-(size>>1)-1; i++ ){
         for (j=(size-1)>>1; j<=max_size-(size>>1)-1; j++ ){
             std::cout<<pMagic_square[i][j]<<",";
         }
         std::cout<<std::endl;
     }
     delete[] pMagic_square;
     getch();
     return 0;
}
Yandex
Объявления
27.01.2010, 22:57     Олимпиадная задача на числа
Ответ Создать тему
Опции темы

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