李华的收入

                                                                       李华的收入

                                                      时间限制: 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;
}

 

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