1 / 1 / 0
Регистрация: 24.03.2015
Сообщений: 50
1

Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n?

28.10.2015, 21:37. Показов 2611. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n?
Входные данные

Целое число n, по модулю не превышает 1015.
Входные данные

Входные данные #1

127

Выходные данные #1

721
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2015, 21:37
Ответы с готовыми решениями:

Дано четырехзначное натуральное число А . Какое число получится если в нем поменять местами первую и третью цифры
Дано четырехзначное натуральное число А . Какое число получится если в нем поменять местами первую...

Какое наибольшее число можно получить из цифр натурального числа, введенного с клавиатуры
какое наибольшее число, можно получить из цифр натурального числа, введенного с клавиатуры

Получить новое число y из исходного, поменяв местами две цифры исходного числа
Дано вещественное число x. Получить новое число y из исходного, поменяв местами две цифры исходного...

Определить число, которое получим, если выпишем в обратном направлении цифры заданого трёхзначного числа
Определить число, которое получим, если выпишем в обратном направлении цифры заданого трёхзначного...

16
1 / 1 / 0
Регистрация: 24.03.2015
Сообщений: 50
30.10.2015, 14:19  [ТС] 2
кто-нибудь
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
30.10.2015, 15:41 3
Задание не такое простое, как кажется на первый взгляд.
Может есть еще какие нибудь условия или данные по задаче?

Добавлено через 47 секунд
Например, если задано 721 - то надо ли переставлять цифры, если число и так максимально?
0
Модератор
9851 / 5222 / 3303
Регистрация: 17.08.2012
Сообщений: 15,971
30.10.2015, 15:51 4
И ещё. Может, всё-таки 1015, а не 1015?
0
1 / 1 / 0
Регистрация: 24.03.2015
Сообщений: 50
30.10.2015, 16:09  [ТС] 5
Да,вы правы,ошибся,там 10 в пятнадцатом степени
0
Модератор
9851 / 5222 / 3303
Регистрация: 17.08.2012
Сообщений: 15,971
30.10.2015, 16:12 6
Цитата Сообщение от APALoff Посмотреть сообщение
надо ли переставлять цифры, если число и так максимально?
???
0
1 / 1 / 0
Регистрация: 24.03.2015
Сообщений: 50
30.10.2015, 16:12  [ТС] 7
В этом то и вся загвоздка,что каких-либо других условий не дано,только эти
На счет 721 не знаю,но по-моему все равно нужно поменять цифры,чтобы получилось другое число.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7767 / 4596 / 2823
Регистрация: 22.11.2013
Сообщений: 13,074
Записей в блоге: 1
30.10.2015, 17:21 8
В первом приближении:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
  s: String;
  i, j: Integer;
  t: Char;
begin
  ReadLn(s);
  if s[1]='-' then begin
    j:=3; for i:=4 to Length(s) do if s[j]>s[i] then j:=i;
    t:=s[j]; s[j]:=s[2]; s[2]:=t;
  end else begin
    j:=2; for i:=3 to Length(s) do if s[j]<s[i] then j:=i;
    t:=s[j]; s[j]:=s[1]; s[1]:=t;
  end;
  WriteLn(s);
end.
Очередная проблема: 771 -- можно ли менять 7 и 7 ?
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
30.10.2015, 17:35 9
Лучший ответ Сообщение было отмечено Aleks54321 как решение

Решение

А вот моё "приближение":
Pascal
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
Var
  n : int64;
  st : String;
 
Function SwapCh(s : String; a,b : Byte) : String;
Begin
  s[a]:=Chr(Ord(s[a]) xor Ord(s[b]));
  s[b]:=Chr(Ord(s[a]) xor Ord(s[b]));
  s[a]:=Chr(Ord(s[a]) xor Ord(s[b]));
  SwapCh:=s;
end;
 
Function SW(s : String) : String;
Var
  Positiv : Boolean;
  i,j : Byte;
  smax  : String;
Begin
  Positiv:=s[1]<>'-';
  If s[1]='-' then Delete(s,1,1);
  smax:=SwapCh(s,1,2);
  If Length(s)>1 then
  Begin
    For i:=1 to Length(s)-1 do
     For j:=i+1 to Length(s) do
       If (Positiv and (SwapCh(s,i,j)>smax)) or
          (not Positiv and (SwapCh(s,i,j)<smax)) then smax:=SwapCh(s,i,j) 
  end else smax:=s;
  If not Positiv then smax:='-'+smax;
  SW:=smax;
end;
 
Begin
  Readln(n);
  Str(n,st);
  Writeln(SW(st));
end.
Добавлено через 6 минут
bormant, у Вас не верный результат для -172
1
Модератор
9851 / 5222 / 3303
Регистрация: 17.08.2012
Сообщений: 15,971
30.10.2015, 17:40 10
bormant, ещё там 1015.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7767 / 4596 / 2823
Регистрация: 22.11.2013
Сообщений: 13,074
Записей в блоге: 1
30.10.2015, 17:56 11
Цитата Сообщение от APALoff Посмотреть сообщение
bormant, у Вас не верный результат для -172
Исходим из того, что перестановка обязательна, для -172 даст -271.
Какой результат по-вашему должен был бы быть?
Если перестановка необязательна, в 8 и 11 используем for i:=j to (вместо for i:=j+1 to).

Цитата Сообщение от Cyborg Drone Посмотреть сообщение
bormant, ещё там 1015
Да хоть -10253..10254. Или я не понял замечания?
0
1646 / 1075 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
30.10.2015, 17:57 12
Цитата Сообщение от bormant Посмотреть сообщение
Какой результат по-вашему должен был бы быть?
-127
0
Платежеспособный зверь
8924 / 4352 / 1642
Регистрация: 28.10.2009
Сообщений: 11,567
30.10.2015, 18:16 13
bormant, не катит прога. При s=4312 прога выдаёт 3412, а надо 4321
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7767 / 4596 / 2823
Регистрация: 22.11.2013
Сообщений: 13,074
Записей в блоге: 1
30.10.2015, 18:18 14
кот Бегемот,
угу, увидел, понял.

Цитата Сообщение от APALoff Посмотреть сообщение
-127
ок, увидел, реализованный алгоритм "поставить на первое место максимальную/минимальную цифру" решением задачи не является.
0
Модератор
9851 / 5222 / 3303
Регистрация: 17.08.2012
Сообщений: 15,971
30.10.2015, 18:30 15
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
там 1015
...А у тебя строка. Не увидел сразу. Извиняюсь.
0
1 / 1 / 0
Регистрация: 24.03.2015
Сообщений: 50
30.10.2015, 19:50  [ТС] 16
APALoff,спасибо,код прошел 75% тестов!
0
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 3
01.01.2016, 19:28 17
Pascal
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
var
s:ansistring;
i,n,k,j,max:longint;
w:char;
begin
readln (s);
if s[1]='-' then begin
delete (s,1,1);
j:=1;
while k=0 do begin
k:=0;
max:=ord(s[j])-48;
for i:=1 to length(s) do 
if (ord(s[i])-48 < max)and(i>j)and( ((j=1)and(ord(s[i])-48>0))or(j>1) ) then begin inc (k); max:=ord(s[i])-48; end;
if k=0 then inc (j);
if j>length(s) then begin writeln ('-',s); exit; end;
end;
for i:=length(s) downto j+1 do 
if ord(s[i])-48 = max then begin
w:=s[i]; s[i]:=s[j]; s[j]:=w; end;
writeln ('-',s);
exit; end;
j:=1;
while k=0 do begin
k:=0;
max:=ord(s[j])-48;
for i:=1 to length(s) do 
if (ord(s[i])-48 > max)and(i>j) then begin inc (k); max:=ord(s[i])-48; end;
if k=0 then inc (j);
if j>length(s) then begin writeln (s); exit; end;
end;
for i:=length(s) downto j+1 do 
if ord(s[i])-48 = max then begin
w:=s[i]; s[i]:=s[j]; s[j]:=w; end;
writeln (s);
end.
0
01.01.2016, 19:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2016, 19:28
Помогаю со студенческими работами здесь

Какое наименьшее число Z можно получить вставкой цифры X в четырёхзначное число Y
Какое наименьшее число Z можно получить вставкой цифры X в четырёхзначное число Y. Ведущие нули не...

Поменять местами первые две цифры числа из массива чисел
Задание таково, что нужно вывести интервал чисел и поменять местами 1 и 2 цифру у каждого числа...

Дано целое двухзначное число a. Получить наибольшее число, которое можно получить из цифр числа a
Дано целое двухзначное число a. Получить наибольшее число, которое можно получить из цифр числа a....

Какое число получится, если из заданного числа удалить все цифры от 0 до 5?
4. Дано натуральное число А типа longint, заданное случайно. Какое число получится, если из него...

Поменять местами первые две цифры введенного числа с последними двумя, не меняя их взаимного расположения.
дано четырехзначное число А. составить программу, которая бы меняла местами первые две цифры...

Получить все цифры заданого пользователем числа
Здравствуйте! Наверняка, это элементарнейшая задача, но все же прошу помощи: Нужно написать...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru