![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
LammerzAttack |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дано: Число n, такое что 10<=n<=1000000000;
Нужно написать прогу, которая бы за 1 секунду выводила [/s]все пары чисел A и B, таких что 1)A+b=n; 2)число B получается из A путем удаления одной цифры. Например Дано: n=302; Получается: 251 + 51 = 302 275 + 27 = 302 276 + 26 = 302 281 + 21 = 302 301 + 01 = 302 Если есть идеи, помогите. |
![]() ![]() |
LammerzAttack |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: ![]() ![]() ![]() |
Извинете что не принял участия в своей же теме, просто были проблемы с инетом. А до решения я уже допер. Надо представить Искомое число А, как Б1Б2Б3. Здесь Б2 цифра которую я вычеркиваю, Б1 то что до этой цифры, а Б3 то что после. (Пример, 4125326, вычеркиваю 5. Б1=412, Б2=5, Б3=326)
Тогда чтобы решить задачу нужно поочереди вычекивать цифры и решать уравнение в целых числах:100Б1+10Б2+Б3+10Б1+Б3=А. Вот и все. Кстати для 1000000000 прога работает менее 1 сек на cel 466. Сообщение отредактировано: LammerzAttack - 5.02.2005 18:06 |
Nemo |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Может покажешь, что у тебя получилось?
|
LammerzAttack |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(Nemo @ 5.02.05 18:59) Может покажешь, что у тебя получилось? Ну вот и код, заранее прошу прошение за его кривость ![]() Код var k,i,b3,b2,c,n,b1,i1,l:integer; x:array[0..10] of integer; y:array[0..10] of integer; a,bbb:string; begin readln(a); n:=0; val(a,k,c); repeat k:=k div 10; n:=n+1; until k<1; for i:=1 to n do begin val(a[i],x[i],c); end; val(a,k,c); b3:=k div 11; b2:=k-b3*11; if b2<>10 then writeln(b3*10+b2,' ','+',' ',b3,' = ',k); if x[n] mod 2=0 then begin y[0]:=0; l:=1; for i1:=1 to 10 do begin y[i1]:=y[i1-1]+x[n-i1+1]*l; l:=l*10; end; for i:=2 to n do begin b1:=y[i-1] div 2; l:=1; for i1:=1 to (i-1) do l:=l*10; b3:=(k div l) div 11; b2:=k div l-b3*11; if (b3+b2<>0) and (b2>=0) and (b2<=9) then writeln(b3*l*10+b2*l+b1,' ','+',' ',k-(b3*l*10+b2*l+b1),' = ',k); b1:=(y[i-1]+l) div 2; b2:=k div l-b3*11-1; if (b3+b2<>0) and (b2>=0) and (b2<=9) then writeln(b3*l*10+b2*l+b1,' ','+',' ',k-(b3*l*10+b2*l+b1),' = ',k); end; end; readln end. Писал под делфи. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 16:59 |