首页 > 其他 > 详细

UVA11401-Triangle Counting-递推

时间:2016-01-30 02:29:11      阅读:102      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!