1. 程式人生 > >Easy Problem(西安電子科技大學第二節程式設計新生賽A)

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;
}

沒有第一時間想到這個方法的原因就是我的大腦還沒有養成簡化程式碼的習慣,以後要儘量練習這種思維方式。