![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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 - |
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. Писал под делфи. |
![]() ![]() |
![]() |
Текстовая версия | 7.09.2025 13:47 |