Цитата: кстати, коллеги, кто во что играет... если...?
Mass Effect, оба. F.E.A.R., все пять. CS + CZ + CZ deleted scenes. HL, все официальные и некоторые неофициальные. HL2, все официальные + пара модов. Portal + Prelude + Flash version + много мапов. Quake 3 + Arena. DOOM, все три + Resurrection of Evil. Quake IV. MoHAA, первые три официальных. RtCoW + все что есть, не знаю, какие официальные, какие нет, всего у меня их 8. Prey. Ballance. Carmaggeddon 1 classic.
Добавлено: Цитата: Кстати, программа для подсчета кол-ва "счастливых" номеров билетов (из 6 и 7 цифр) -
это стандартный тест для начинающих программеров с незапамятных времен...
[more=Это?]
Код: #include <iostream>
#include <vector>
#include <cmath>
/* Первый параметр шаблона - тип представления частичных сумм (целочисленный),
второй - тип представления результирующей вероятности (вещественный) */
template <typename Arg, typename Res>
// Параметр функции - количество цифр в половине номера билета
double getProb(int N)
{
// Массив частичных сумм (каждый элемент массива - количество половинок
// номеров билетов с суммой цифр, равной индексу массива). По факту -
// гистограмма расспределения.
std::vector<Arg> gist(9*N+1);
// Биноминальные коэффициенты со знаком
std::vector<Arg> mCn(N);
Res prob=0.0f;
Res pow10=pow(static_cast<Res>(10), N*2);
// Для общности - билет без номера только один и притом счастливый
if(N==0) mCn.resize(1);
// Расчёт биноминальных коэффициентов
mCn[0]=1;
for(int i=1; i<N; ++i)
mCn[i]=mCn[i-1]*(N-i)/i;
// Инициализация гистограммы
for(int i=0, sign=1; i<gist.size(); i+=10, sign=-sign)
for(int j=0; j<10 && i+j<gist.size(); ++j)
gist[i+j]=mCn[i/10]*sign;
// Заполнение гистограммы
for(int i=1; i<N; ++i)
for(int j=1; j<gist.size(); ++j)
gist[j]+=gist[j-1];
// Расчёт результирующей вероятности
for(int i=0; i<gist.size(); ++i)
prob+=gist[i]/pow10*gist[i];
return prob;
}
int main()
{
for(int i=0; i<10; ++i)
std::cout<<i<<' '<<getProb<int, float>(i)<<std::endl;
std::cout<<10<<' '<<getProb<int, double>(10)<<std::endl;
for(int i=11; i<18; ++i)
std::cout<<i<<' '<<getProb<__int64, double>(i)<<std::endl;
#if defined USE_LONG_DOUBLE || defined IGNORE_PRECISION_LOST
for(int i=18; i<21; ++i)
std::cout<<i<<' '<<getProb<__int64, long double>(i)<<std::endl;
std::cout<<21<<' '<<getProb<double, long double>(21)<<std::endl;
#if defined IGNORE_PRECISION_LOST
for(int i=22; i<41; ++i)
std::cout<<i<<' '<<getProb<double, long double>(i)<<std::endl;
#endif
#endif
}