Easy Problem(西安电子科技大学第二节程序设计新生赛A)

Easy Problem

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

输入描述:
多组数据,输入以EOF结尾(不超过1e5组)
每行一个n(1<=n<=1e9)

输出描述:
每行一个数表示构造数列的长度

示例
输入
4
9
10

输出
2
3
3
这个题我开始用的是创建一个以1为首项,2为公差的等差数列,但超时了T^T。
于是,我直接用等差数列前n项和公式推导出根号n取整后即为该数列的长度。

#include<stdio.h>
#include<math.h>
int main()
{
    long long int n,a;
    double m;
    while(scanf("%lld",&n)!=EOF)
    {
        m=sqrt(n);
        a=m;
        printf("%lld\n",a);
    }
    return 0;
}

没有第一时间想到这个方法的原因就是我的大脑还没有养成简化代码的习惯,以后要尽量练习这种思维方式。

猜你喜欢

转载自blog.csdn.net/weixin_43105110/article/details/84898963