Я не математик, я - программист. Я не мыслю формулами, я мыслю - алгоритмами, блин :)))
Но я-таки потратила минут 5 на написание, и еще минут 5 на проверку формулы, только она общего вида, выводить отсюда t я не буду, гы: (100-2^(t-1)*t)*2^t = 0. t = 100, то есть, после 100 минут (действительно, на 101-ую) бактерий будет 0, проверено Excel-ем, забив туда форумулу с последовательными значениями t.
С алгоритмом все сложнее. На него у меня ушло 30 секунд, но есть некая особенность, из-за которой полностью полагаться на работоспособность алгоритма при любых входных данных нельзя - на промежуточных итерациях получаются громадные значения для количества бактерий и вирусов, поэтому при использовании определенных типов данных происходит переполнение, и алгоритм дает неверный ответ. Вот такая вот шняга ...
double x = 100, y = 1; int t = 0; while (x > 0 && t < MaxInt) // условия "t < MaxInt" на всякий случай - как доп. условие выхода из цикла { t++; x = (x - y) * 2; y = y * 2; }; ShowMessage(t);
Comments 11
Reply
а вот интересно, ты это решал просто так? а то я знаю человека, который умудрился тут уравнений понаписать :)
Reply
Reply
Но я-таки потратила минут 5 на написание, и еще минут 5 на проверку формулы, только она общего вида, выводить отсюда t я не буду, гы: (100-2^(t-1)*t)*2^t = 0. t = 100, то есть, после 100 минут (действительно, на 101-ую) бактерий будет 0, проверено Excel-ем, забив туда форумулу с последовательными значениями t.
С алгоритмом все сложнее. На него у меня ушло 30 секунд, но есть некая особенность, из-за которой полностью полагаться на работоспособность алгоритма при любых входных данных нельзя - на промежуточных итерациях получаются громадные значения для количества бактерий и вирусов, поэтому при использовании определенных типов данных происходит переполнение, и алгоритм дает неверный ответ. Вот такая вот шняга ...
Reply
double x = 100, y = 1;
int t = 0;
while (x > 0 && t < MaxInt)
// условия "t < MaxInt" на всякий случай - как доп. условие выхода из цикла
{
t++;
x = (x - y) * 2;
y = y * 2;
};
ShowMessage(t);
Reply
Reply
Reply
Reply
Leave a comment