问题 AQ: 你的QQ多少级了?

题目描述
QQ等级是2003年腾讯公司推出的QQ中的一种制度。最早是以小时来计算的,那段时间,绝大部分QQ用户都在挂QQ。随后就有不少媒体指责其浪费能源。在有关部门的介入下,腾讯公司将QQ等级变为以天为单位,每天只要在线两个小时就算一天。 半小时以上、两小时以下则记为半天。QQ等级最先开始的样子是星星,4个星星等于一个月亮,4个月亮等于一个太阳。4个太阳等于一个皇冠。(即:1个星星为1级,1个月亮为4级,1个太阳为16级,1个皇冠为64级。)一开始增加一个星星只用几天,到后面就要越来越多的天数来升级了。

用户可以在好友资料的浮出Tips显示中查看好友的在线等级,也可以在主面板自己头像的浮出Tips中查看自己的在线等级。用户到达每个等级需要的总天数可用如下的计算公式计算:

Days = Level * Level + Level * 4

现在你需要做的工作是根据给出的天数,计算用户的当前等级。

输入
输入仅一行,为一个非负整数Days,表示用户的活跃天数,输入数据在int表示的范围内。
输出
输出仅一行:一个整数表示用户的等级。
样例输入 Copy
867
样例输出 Copy
27

请问怎么做

如有帮助,请采纳支持!

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    int days;
    scanf("%d", &days);
    for(int level =0; level<sqrt(days); level++) {

        if((level*level+4*level)>=days) {
            if(level*level+4*level==days) {
                cout<<level;
                break;
            } else  {
                cout<<level-1;
                break;
            }
        }

    }
    return 0;
}

img

样例输入 Copy
867
样例输出 Copy
27
这里是867还是837

若有帮助望采纳:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int days=0;
    scanf("%d", &days);
    for(int level =0; level<sqrt(days-4)-1; level++)
    {
        if(level*level+4*level==days)
        {
            cout<<level<<endl;
            return 0;
        }
        else if(level*level+4*level>days)
        {
            cout<<level-1<<endl;
            return 0;
        }
    }
}