Другие языки программирования и технологии
Задача о вычислении вероятности выпадения счастливого трамвайного билетика.
Сумма первых трех цифр равна сумме трех последних.
bool IsHappy(unsigned int n)
{
unsigned int i, d[10];
i = 0;
memset(d, 0, sizeof(d));
do
{
d[i++] = n % 10;
} while (n /= 10);
return ( (d[0] + d[1] + d[2]) == (d[3] + d[4] + d[5]) );
}
int main()
{
unsigned int count = 0;
for (unsigned int n = 0; n < 1000000; ++n)
{
if (IsHappy(n))
{
printf("%d\n", n);
++count;
}
}
printf("%.3f %%\n", 100.0 * count / 1000000);
return 0;
}
{
unsigned int i, d[10];
i = 0;
memset(d, 0, sizeof(d));
do
{
d[i++] = n % 10;
} while (n /= 10);
return ( (d[0] + d[1] + d[2]) == (d[3] + d[4] + d[5]) );
}
int main()
{
unsigned int count = 0;
for (unsigned int n = 0; n < 1000000; ++n)
{
if (IsHappy(n))
{
printf("%d\n", n);
++count;
}
}
printf("%.3f %%\n", 100.0 * count / 1000000);
return 0;
}
var i,i1,i2,i3,k:word; c:array[0..27]of word;
begin
k:=0; for i:=0 to 27 do c[ i]:=0;
for i1:=0 to 9 do for i2:=0 to 9 do for i3:=0 to 9 do inc(c[ i1+i2+i3]);
for i:=0 to 27 do k:=k+sqr(c[ i]); writeln(k/1e6:9:6); readln
end.
begin
k:=0; for i:=0 to 27 do c[ i]:=0;
for i1:=0 to 9 do for i2:=0 to 9 do for i3:=0 to 9 do inc(c[ i1+i2+i3]);
for i:=0 to 27 do k:=k+sqr(c[ i]); writeln(k/1e6:9:6); readln
end.
Смотри что можно сделать:
Заводишь массив, [0..27] - в таких пределах у тебя заключена сумма трех цифр.
Потом от 0 до 999 проходишь, находишь сумму цифр в числе и добавляешь в соотвествующий элемент массива единицу. (Это можно сделать в принципе 3мя вложенными циклами)
Затем проходишь по этому массиву, каждый элемент возводишь в квадрат (тебе нужны все комбинации) и складываешь. Все - получено число счастливых билетов. Теперь делишь это число на 1000 000 и находишь вероятность: -)
Заводишь массив, [0..27] - в таких пределах у тебя заключена сумма трех цифр.
Потом от 0 до 999 проходишь, находишь сумму цифр в числе и добавляешь в соотвествующий элемент массива единицу. (Это можно сделать в принципе 3мя вложенными циклами)
Затем проходишь по этому массиву, каждый элемент возводишь в квадрат (тебе нужны все комбинации) и складываешь. Все - получено число счастливых билетов. Теперь делишь это число на 1000 000 и находишь вероятность: -)
Вероятность то что он попадет тебе максимум 10% при том что в транспорте не маленькое количество людей!
Задача не полнаценая. Сколько билетиков в обороте? =)))
Похожие вопросы
- Какова вероятность выпадения двух чисел подряд?
- 144. С клавиатуры вводится шестизначный номер трамвайного билета. Определить, является ли билет счастливым.
- Как программировать задачи такого типа: вычисление неопределенного интеграла, нахождение собственных чисел матрицы....
- Вычисление суммы с факториалом в С++?
- Текущая разница между Асинхронностью и параллельными вычислениями?
- Вычислить arth Есть ли формула для проверки правильности вычисления .и правильный ли код?
- Вычисление суммы ряда на c++
- Вычисления с некоторой точностью
- Вопрос по информатике. Почему точность вычислений в С определяется только 16 знаком после запятой и почему именно 16?
- вычисление по IP адресу, вопрос