Вниз  Разбор интересных задач
- 7.01.2011 / 11:21
XakepPRO
  Пользователь

XakepPRO 
Молодец, за старания даю 120 монет, однако я протестить смог только на бумаге (что не очень хорошо).

Теперь моё решение.

Обозначим:
T - исходная строка, L - длина этой строки. Для решения создадим ещё одну строку T1 (вначале пустую). Далее организуем цикл по номеру символа в строке T. Если очередной символ не #, то добавим его к строке T1, если это знак # и строка T1 не пустая, то удалим из неё последний символ.
Программа, реализирующая данный алгоритм на паскале будет иметь следующий вид:

  1. var t,t1:string;
  2.      l,i,k:integer;
  3. begin
  4.   writeln('Введите строку');
  5.   readln(t);
  6.   l:=length(t);
  7.   t1:=''; //Две одинарных кавычки '
  8.   k:=0;
  9.   for i:=1 to l do
  10.   if (t[i]='#') and (k<>0) then
  11.    begin
  12.     delete(t1,k,1);
  13.     k:=k-1;
  14.    end
  15.   else
  16.     begin
  17.      k:=k+1;
  18.      t1:=t1+t[i];
  19.     end;
  20.   writeln(t1);
  21. end.


Изменено XakepPRO (7.01 / 11:22) (всего 1 раз)
- 7.01.2011 / 11:28
XakepPRO
  Пользователь

XakepPRO 
Тут, как я вижу, любителей бейсика немного, поэтому выкладывать не буду. Если же очень интересно (узнать решение), то скажите мне - напишу.
- 7.01.2011 / 11:44
XakepPRO
  Пользователь

XakepPRO 
Теперь еще одна задача. Легкая.

Распечатать числовую последовательность, которая задается по следующим правилам:
 
  - первое число последовательности - натуральное число, кратное 3 (входной параметр задачи);
  - каждый последующий элемент равен сумме кубов цифр предыдущего.

Например:
  1. 33
  2. 3^3 + 3^3 = 54
  3. 5^3 + 4^3 = 189
  4. 1^3 + 8^3 + 9^3 = 1242
  5. 1^3 + 2^3 + 4^3 + 2^3 = 81
  6. 8^3 + 1^3 = 513
  7. 5^3 + 1^3 + 3^3 = 153


Вычисления прекратить, когда очередной элемент последовательности станет равен 153. (Известно, что любая такая последовательность рано или поздно приводит к 153).

Даю за неё 70 монет.
- 7.01.2011 / 14:27
LPzhelud
  Пользователь

LPzhelud 
Сейчас: Offline
XakepPRO,
  1. int proc(int input){
  2. return next(input);
  3. }
  4. int next(int in){
  5. Vector v=new Vector();
  6. for(int i=1;in>0;i++){
  7. v.addElement(new Integer(in%row(10,i));
  8. in-=in%row(10,i);
  9. }
  10. int sum;
  11. for(int i=0;i<v.size();i++){
  12. sum+=row(((Integer)(v.elementAt(i))).intValue(),3);
  13. }
  14. return sum==153?153:next(sum);
  15. }
  16.  
  17. int row(int a,int b){
  18. int ret=1;
  19. for(int i=0; i<b;i++){
  20. ret*=a;
  21. }
  22. return ret;
  23. }

__________________
 Эль Презеденте
- 7.01.2011 / 14:59
XakepPRO
  Пользователь

XakepPRO 
На вас не раскошелишься) (не наберещься денег).
Яву не знаю, поэтому результат будет запоздалым.
Давайте, чтобы легче было тестировать, компилировать прогрмаммы и выкладывать суда?
- 7.01.2011 / 15:24
LPzhelud
  Пользователь

LPzhelud 
Сейчас: Offline
XakepPRO, Мне на бумаге компилировать?)
__________________
 Эль Презеденте
- 7.01.2011 / 16:02
XakepPRO
  Пользователь

XakepPRO 
xD, если вдруг в бумаге возникнут электрические токи.

Ты на телефоне?
- 7.01.2011 / 20:16
Artej
  Пользователь

Artej 
Сейчас: Offline
Представить число –37,53(10 система счисления) в форме с плавающей точкой в тридцатидвухразрядной ячейке.
- 7.01.2011 / 20:33
Artej
  Пользователь

Artej 
Сейчас: Offline
Большая МЕГА-подсказка.


Прикрепленные файлы:
Skachat_lekciju(…).pdf (471.9 кб.) Скачано 795 раз
- 7.01.2011 / 20:47
XakepPRO
  Пользователь

XakepPRO 
А попроще не мог формат? У меня телефон такой не читает)

Как я понял, это число нужно перевести в двоичную систему.

Давайте будем решать по кускам.

37 в 10сс (системе счисления) = 100101 в 2сс
0.53 в 10сс = 0.100001111010111000011 в 2сс
Как я знаю, представление отрицательных чисел в 10сс осуществляется добавлением 1 перед записью этого же числа в 2сс, и эмм.. инвертированием записи таким вот образом:
1 на 0
0 на 1

Получаем:
1011010.011110000101000111100 (хотя в последних двух может быть и так: 01)

Вуаля, решение готово.
Наверх  Всего сообщений: 751
Фильтровать сообщения
Поиск по теме
Файлы топика (34)