UVa11401

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2396

组合。过后再写推导过程。

#include<iostream>

using namespace std;

const int maxn=1000010;

long long num[maxn];

int main()
{
    num[3]=0;
    for(long long i=4; i<maxn; i++)
    {
        num[i]=num[i-1]+((i-1)*(i-2)/2-(i-1)/2)/2;
    }
    int n;
    while(cin>>n)
    {
        if(n<3)
        {
            break;
        }
        cout<<num[n]<<endl;
    }
}


你可能感兴趣的:(uva,ACM题解报告)