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

CodeForces Round #280 (Div.2)

时间:2014-12-02 13:31:59      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   sp   for   div   log   bs   ef   

A
解题思路:即为给出的形如 1,1+2,1+2+3,1+2+3+4,----,1+2+3+4+---+n的数列,给你一个数判断它在该数列的第几项。这个数列的前n项和公式为 s(n)=n*(n+1)*(n+2)/6;
证明 s(n)=n*(n+1)*(n+2)/6
因为 a(n)=n*(n+1)/2=n*n/2+n/2;
所以 s(n)=(1*1+2*2+3*3+---+n*n)/2+(n*(n+1)/2)/2
             =[n*(n+1)*(2n+1)/6]/2+n*(n+1)/4;
             =n*(n+1)*(n+2)/6
即为判断输入的值在[s(n),s(n-1))这个半开半闭区间,则处于第n层
#include<stdio.h>
int main()
{
    int i,n;
    int s1,s2;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=1;i<=100;i++)
        {
            s1=i*(i+1)*(i+2)/6;
            s2=(i+1)*(i+2)*(i+3)/6;
            if(n>=s1&&n<s2)
            {
                printf("%d\n",i);
                break;
            }
            
        }
    }
}

 

CodeForces Round #280 (Div.2)

标签:blog   io   ar   sp   for   div   log   bs   ef   

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4137166.html

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