Помогите с задачами!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Relrin
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:32

Нужна помощь по задачам:

1) Определить номера подъезда и этажа по номеру квартиры девятиэтажного дома, считая, что на каждом этаже ровно 4 квартиры, а нумерация квартир начинается с первого подъезда.

2) Пусть бактерии могут быть двух цветов: зеленые и красные. Красная бактерия за один такт времени меняет цвет на зеленый. Зеленая бактерия за один такт времени делится на две бактерии: красную и зеленую. Сколько всего бактерий (красных и зеленых вместе) будет через K тактов времени, если, если сначало было N бактерий красного цвета.

3) Некий астролог определяет счастливые и нечаствливые дни так: он вписывает подряд число, номер месяца и год рождения. В получившемся числе складывает цифры, у вновь получившегося числа внось складывает все цифры и т.д., пока очередная сумма цифр не станет однозначным числом. Это число и характеризует "счастливость дня". Напишите программу определяющую по дате ее "счастиловость".
Пример. Ввод: день рождения: 05
номер месяца: 02
год рождения: 1995
Вывод: Счастиливый день - 4.

Ребята! Помогите! Оч сильно нужна ваша помощь...
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

подъезд=n / (9*4)+1
этаж=(n-n / (9*4)*(9*4))/4+1
Relrin
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:32

airyashov писал(а):подъезд=n / (9*4)+1
этаж=(n-n / (9*4)*(9*4))/4+1
За n что ты брал? Номер квартиры грубо говоря? :)

Со 2ой задачей я чутка разобрался...но с делением проблемы...Пока что написано ко 2ой:
begin
writeln('vvedite kol-vo taktov ');
readln(k);
writeln('vvedite chislo krasnih bakterii');
readln(n);
s:=0;
For i:=1 to k do
begin
zel:=n;
s:=s+t;
t:=zel*i*2
i:=i+1;
end;
writeln(s);
readln;
end.

Только самое сложное это в цикле фор...Я намудрил...Часть подсчетов он делает правильно, другую - нет.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

2) Классический ряд Фибоначчи, общее число бактерий = N * Число_Фибоначчи(К)
It's a long way to the top if you wanna rock'n'roll
Relrin
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:32

somewhere писал(а):2) Классический ряд Фибоначчи, общее число бактерий = N * Число_Фибоначчи(К)
Т.е. так должно, учитываю что к примеру 2 бактерии: 2*6? (6- кол-во тактов)
Relrin
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:32

airyashov писал(а):подъезд=n / (9*4)+1
этаж=(n-n / (9*4)*(9*4))/4+1
Что то не сходится. Какое-бы я число не вводил всегда 1ый этаж.... :(
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Я кажется понятно написал? Повторюсь, эта зависимость от ряда Фибоначчи, общее число бактерий = N * Число_Фибоначчи(К)
It's a long way to the top if you wanna rock'n'roll
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

n-номер квартиры

3. числа в строку и гонять строку пока длина не 1
str:=inttostr(day+mounth+year);
do
str:=Summa(str);
while (len(str)<>1)


Summa()
s=0;
for i=1 to len(str) do
s=s+val(str);
next i
return inttostr(s);

в общих чертах
Relrin
Сообщения: 11
Зарегистрирован: 26 мар 2008, 10:32

В 3ей...Я сначало должен сложить...1995+5+2=2002...После надо щемить эти 2ки...Ток вот как?
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Счастливость (рекурсивно)

Код: Выделить всё

function happy(s:string): integer;
var sum, i: integer;
begin
  if length(s)=1 then 
     begin happy:=ord(s[1])-ord('0'); exit; end;
  sum:=0;
  for i:=1 to length(s) do
    sum:=sum+ord(s[i])-ord('0');
  happy:=happy(inttostr(sum));
end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить