首页 > 代码库 > CodeForces Round #280 (Div.2)
CodeForces Round #280 (Div.2)
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。