Easy Problem(等差数列求和导公式)

链接:https://ac.nowcoder.com/acm/contest/316/A
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

构造一个无重复的只含有正奇数的数列,使得这个数列所有项之和不超过n。输出所能构造的数列长度的最大值。

输入描述:

多组数据,输入以EOF结尾(不超过1e5组)

每行一个n(1<=n<=1e9)

输出描述:

每行一个数表示构造数列的长度

示例1

输入

复制

4
9
10

输出

复制

2
3
3

题解:暴力去解肯定超时,这就需要我们都是正奇数,我们就可以利用等差数列的求和来求即可

公式为(2*n-1+1)*n/2<=输入的数,那我们就可以求出n的最大整数值为输入值的算术平方根

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
 
int main()
{
    int n;
    int sum,s;
    while(scanf("%d",&n)!=EOF)
    {
        s=sqrt(n);
        printf("%d
",s);
    }
     
    return 0;
}
原文地址:https://www.cnblogs.com/Staceyacm/p/10781991.html