最新文章:

首页 2)SwustOj

你的QQ多少级了?(0533)

发布时间:2017年11月07日 评论数:抢沙发 阅读数:143

    腾讯公司于2005年8月15日推出新的QQ在线计划服务。通过累积活跃天数,就可以获取相应的QQ等级。QQ在线等级由太阳,月亮,星星三个图标标识。 1个太阳代表16级,一个月亮代表4级,一个星星代表1级.您可以在好友资料和好友资料浮出Tips显示中查看好友的在线等级。也可以在主面板自己头像的浮出Tips中查看自己的在线等级。 
     
    用户的到达每个等级需要的总天数以如下的计算公式计算: 
    Days = Level * Level + Level * 4; 
    现在你需要做的工作是 
    根据给出的天数,计算用户的当前等级;
    Description
    输入有多组测试数据,每组输入为一个非负整数,表示用户的活跃天数,输入数据在int表示的范围内. 
    输入0表示测试数据的结束.见Sample Input.
    Input
    对于每一组的输入(0不处理),输出两行; 
    第一行为一个整数表示用户的等级,第二行为3个整数,为用户的太阳,月亮,星星的个数,以一个空格分隔开.见Sample Output.
    Output
    1
    2
    3
    4
    5
    5
    867
    2
    0
    Sample Input
    1
    2
    3
    4
    5
    6
    1
    0 0 1
    27
    1 2 3
    0
    0 0 0
    Sample Output
    其实你根据自己的QQ就知道写的程序有没有错吧```


    学校给的答案:是错的。不能ac。

    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	int x,y,a,b,c;
    	while(~scanf("%d",&x))
    	{
    		if(x==0)break;
    		else
    		{
    			y=sqrt(x+4)-2;
    			a=y/6;
    			b=(y-(a*16))/4;
    			c=y-(a*16)-(b*4);
    			printf("%d\n",y);
    			printf("%d %d %d\n",a,b,c);
    		}
    	}
    	return 0;
    }

    我的答案:

    #include<stdio.h>
    int main()
    {
    	int day,level,t,y,x;
    	while(~scanf("%d",&day))
    	{
    		if(day==0)return 0;
    		int sum;
    		for(int i=0;;i++)
    		{
    			sum=i*i+4*i;
    			if(sum>day)
    			{
    				level=i-1;
    				break;
    			}
    		}
    		t=(level-level%16)/16;
    		y=((level-t*16)-(level-t*16)%4)/4;
    		x=level-t*16-y*4;
    		printf("%d\n%d %d %d\n",level,t,y,x);
    	}
    	return 0;
    }

     

     

二维码加载中...
本文作者:行者      文章标题: 你的QQ多少级了?(0533)
本文地址:https://www.20a.top/?post=36
版权声明:若无注明,本文皆为“我的小世界”原创,转载请保留文章出处。