| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
贴个c++单序列递推代码,N=1000,K=100时答案是15658181104580771094597751280645#include <iostream>
using namespace std;
const int S = 1000000000;//需要实现高精度,每个数表示 10 ^ 9 位
const int NumSize = 4;
struct Num
{
int integer[NumSize];
}a[1001];
void add(Num &x, Num &y);//将 (x + y) 赋给 x
int main()
{
int N, K;
cin >> N >> K;
for (int i = 0; i <= N; i++)
{
a[i].integer[0] = 1;
}
for (int i = 2; i <= K; i++)
{
for (int j = i; j <= N; j++)
{
add(a[j], a[j - i]);
}
}
int up = 3;
while (!a[N].integer[up])
{
up--;
}
for (; up >= 0; up--)
{
cout << a[N].integer[up];
}
return 0;
}
void add(Num &x, Num &y)
{
for (int i = 0; i < NumSize; i++)
{
x.integer[i] += y.integer[i];
}
for (int i = 1; i < NumSize; i++)
{
x.integer[i] += x.integer[i - 1] / S;
}
for (int i = 0; i < NumSize; i++)
{
x.integer[i] %= S;
}
return;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator