您的位置:首页 > 其它

Project Euler problem 53

2012-11-06 21:42 381 查看
就是一个组合数而已

硬求就行。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <cmath>
#include <set>
#include <vector>
#define eps 1e-6
#define INF 1000000007
#define PI acos(-1.0)
using namespace std;
__int64 C(__int64 M, __int64 N)
{
__int64 m = M - N;
__int64 ans = 1;
for(__int64 i = M; i >= m + 1; i--)
{
__int64 tmp = __gcd(i, M - i + 1);
ans /= (M - i + 1) / tmp;
ans *= i / tmp;
}
return ans;
}

int main()
{
int sum = 0;
for(int i = 1; i <= 100; i++)
for(int j = 1; j <= i; j++)
{
if(C(i, j) > 1000000)
{
sum += i + 1 - 2 * j;
break;
}
}
cout << sum << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: