李華的收入

                                                                       李華的收入

                                                      時間限制: 1 Sec 內存限制: 128 MB

題目描述
李華最近缺錢啦,於是他找了一份兼職工作,雖然他英語很厲害,但是他數學是真滴菜,你能幫他算算工資嗎?

老闆給他發工資的模式是:當連續N天每天收入N塊錢,李華會在之後的連續N+1天裏,每天收到N+1塊錢。

比如:第一天,他的收入是1塊錢;之後兩天(第二天和第三天),每天收到2塊錢;之後三天(第四、五、六天),每天收到3塊錢;之後四天(第七、八、九、十天),每天收到4塊錢…;

請計算在第K天時,李華的收入一共爲多少。

輸入
有多組測試數據,遇到EOF結束。

每組輸入只有一行,包含一個正整數K(1<=K<=10000),表示兼職的天數。

輸出
輸出只有一行,包含一個正整數,即李華在這K天內的總收入。

樣例輸入
6

樣例輸出
14

題目依據ZZULIOJ 2382題
我只是改變了題目描述
分析我在代碼中註解,可能有點表達不太清晰,只是個人理解,方法還有很多。

C代碼:

#include <stdio.h>
int main()
{
    int i,n,sum,q;  
    while(scanf("%d",&n)!=EOF)  //收入1塊錢的天數有1天,收入兩塊錢的天數有2天,收入3塊錢的天數有3天......以此類推;
    {                           //所以收入和就是: 收入的錢數*收入這些錢數的天數 例如: 6天就是1*1+2*2+3*3=14
        q=0;                    //那如果 計算的天數正好不是收入錢數完整的天數 比如7天,就是收入1塊錢有1天,2塊有兩天,3塊有3天,而收入4塊的只有1天
        sum=0;                  //所以就用1*1+2*2+3*3+4*1來計算
        for(i=0;sum<n;)         //這個for循環 sum代表天數 而i代表收入m塊錢有m天(意思就是收入的錢=收入這些錢的天數)到幾不再完整
        {
            i++;                //i++寫下面是因爲    如果寫上面的話,sum<n不成立跳出循環的時候會再加一次
            sum=sum+i;
            q=q+i*i;            //計算前面完整的天數 完整的天數都是平方和
        }
        q=q+i*(n-sum);          //i*(n-sum)就是不完整天數收入的錢*不完整的天數
        printf("%d\n",q);
    }
    return 0;
}

C++代碼:

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int i,n,sum,q;
    while(scanf("%d",&n)!=EOF)
    {
        q=0;
        sum=0;
        for(i=0;sum<n;)
        {
            i++;
            sum=sum+i;
            q=q+i*i;
        }
        q=q+i*(n-sum);
        cout<<q<<endl;
    }
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章