IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Число, Числа больше заданного составленные из тех же цифр
Ольга
сообщение 3.05.2007 12:26
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Оля

Репутация: -  0  +


Вводится некоторое натуральное число N, состоящее не более чем из 8 различных цифр (первая – не 0). Определить, сколько существует различных чисел, больших N и составленных из тех же цифр (и в тех же количествах), что и N.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
samec
сообщение 7.05.2007 11:00
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской
Реальное имя: Юра

Репутация: -  1  +


вот что получилось у меня

program perm;
uses CRT;
var
i,n,kol:Longint;
x:array[1..8] of integer;

function NextPermutation:Boolean;
var
k : Integer;
t : Integer;
y : Integer;
begin

{ //
// Check
//}
if N<=0 then
begin
NextPermutation := False;
Exit;
end;
K:=1;
while K<=N do
begin
if (X[K]<1) or (X[K]>N) then
begin
NextPermutation := False;
Exit;
end;
Inc(K);
end;

{ //
// Process
//}
k := n-1;
while k>0 do
begin
if x[k]<=x[k+1] then
begin
Break;
end;
k := k-1;
end;
if k<>0 then
begin
t := k+1;
while t<n do
begin
if x[t+1]<=x[k] then
begin
Break;
end;
t := t+1;
end;
y := x[k];
x[k] := x[t];
x[t] := y;
t := 0;
while t<(n-k) div 2 do
begin
y := x[n-t];
x[n-t] := x[k+1+t];
x[k+1+t] := y;
t := t+1;
end;
NextPermutation := True;
end
else
begin
NextPermutation := False;
end;
end;


begin
write('Введите n:');
readln(n);
kol:=0;
for i:=1 to n do
begin
write('введите ',i,'-ую цифру числа: ');
readln(x[i]);
end;
clrscr;
write('заданное число: ');
for i:=1 to n do
write(x[i]);
writeln;
writeln;
while (NextPermutation) do
begin
inc(kol);
write(kol,'-ое число: ');
for i:=1 to n do
write(x[i]);
writeln;
end;
writeln('Итого ',kol,' чисел больше заданного');
write('Нажмите любую клавишу для выхода...');
readkey;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 11:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"