码迷,mamicode.com
首页 > 其他好文 > 详细

UVA11401-Triangle Counting-递推

时间:2016-01-30 02:29:40      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

给出一个数字n,计算从1到n能组成几个不同的三角形。

n的范围是10^6,大概就是递推吧。从F[i-1]到F[i]可以线性求出。要注意结果超出int。

 

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

long long dp[1000100];
int N;

int main()
{
    dp[3] = 0;
    dp[4] = 1;
    dp[5] = 3;

    for(int i=6;i<1000010;i++)
    {
        long long k = i-3;
        if(k&1)
            dp[i] = dp[i-1]+(k+1)*(k+1)/4;
        else
            dp[i] = dp[i-1]+ k*(k+2)/4;
    }

    while(~scanf("%d",&N) && N>=3)
    {
        printf("%lld\n",dp[N]);
    }
}

 

UVA11401-Triangle Counting-递推

标签:

原文地址:http://www.cnblogs.com/helica/p/5170272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!