Имя: Пароль:
IT
 
Десятизначное число
0 Ненавижу 1С
 
гуру
15.07.13
16:11
Дано десятизначное число. Первая цифра равна числу нулей в нем, вторая - числу единиц в нем и т.д., последняя - числу девяток в нем.
Требуется найти это число.
1 drcrasher
 
15.07.13
16:12
9000000000
2 drcrasher
 
15.07.13
16:12
следующий
3 Fish
 
15.07.13
16:13
(1) Неправильно: "последняя - числу девяток в нем"
4 Пенза58
 
15.07.13
16:13
(1) Количества девяток нет
5 salvator
 
15.07.13
16:14
910000000001
6 Молодой 1Снег
 
15.07.13
16:14
8000000010
7 пипец
 
15.07.13
16:14
8 salvator
 
15.07.13
16:14
аа, десятизначное..
9 Fish
 
15.07.13
16:15
6210001000
10 drcrasher
 
15.07.13
16:16
(3) тогда
6210001000
11 drcrasher
 
15.07.13
16:16
(10) тормоз!
12 Молодой 1Снег
 
15.07.13
16:16
(6) Неверно :(
13 Ненавижу 1С
 
гуру
15.07.13
16:21
(9)(10) интересует решение, как нашли?
14 drcrasher
 
15.07.13
16:22
(13) перебор не предлагать?
15 KnightAlone
 
15.07.13
16:23
(13) еснно перебором)))
16 KnightAlone
 
15.07.13
16:23
выползли из под тонны бумаги с криком 6210001000! )))
17 drcrasher
 
15.07.13
16:24
9000000000 - есть 9, значит в последний разряд - 1 (рассуждения примерно одинановые)
8000000010
8100000010
7200000100
6210001000

примерно так
18 Ненавижу 1С
 
гуру
15.07.13
16:25
(14)(15) не красиво
19 KnightAlone
 
15.07.13
16:26
(17) не, так не пойдет.
должно быть так:
9999999999 не подошло
9999999998 не подошло
9999999997 не подошло

и тд )
20 Кай066
 
15.07.13
16:27
2022222220 - подходит?
21 drcrasher
 
15.07.13
16:27
(18) писать обработку под это дело не вижу смысла =)
22 Кай066
 
15.07.13
16:28
(20) гоню
23 Fish
 
15.07.13
16:28
(13) см Задача №55. http://tvad.petrsu.ru/olymp/solved/1.htm Там подробно расписано решение.
24 KnightAlone
 
15.07.13
16:28
(20) facepalm
25 Fish
 
15.07.13
16:39
Вот, кстати ещё вариант решения:
int a[10];
void f(int left, int pos)
{
   if (pos == 10) {
       if (left == 0) {
           int b[11];
           memset(b, 0, sizeof(a));
           for(int i = 0; i < 10; i++) {
               ++b[a[i]];
           }
           if (memcmp(a, b, sizeof(a)) == 0) {
               for (int i = 0; i < 10; i++) {
                   cout << a[i];
               }
               cout << "\n";
           }
       }
   }
   else {
       for (int i = 0; i <= left; i++) {
           a[pos] = i;
           f(left - i, pos + 1);
       }
   }
}

int main()
{
   f(10, 0);
   return 0;
}
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший