类似QQ升级的法则问题。

来源:百度知道 编辑:UC知道 时间:2024/05/13 20:15:22
升级规律为:一级到二级是1天,二到三级是2天,三到四级是4天,每一级所需天数都是前一级升级所需天数的2倍,得出任意级别到任意级别所需天数的公式,可以用程序语言。
使用程序语言尽量避免循环

int GetDay(int level)//level表示级别
{
if(level<=0)
return -1;//表示输入的级别不对
int n=1;
for(int i=1;i<level;i++)
{
n *= 2;
}
n--;
return n;
}
上边这个函数用于返回任意级别从一级到N级所需的天数;
如果需要算N级到M级的;就用:
int day = GetDay(M)-GetDay(N);

规律:

1-〉2 天数 1; 二进制表示:1
1-〉3 天数 1+2; 二进制表示:11
1-〉4 天数 1+2+4; 二进制表示:111
1-〉5 天数 1+2+4+8; 二进制表示:1111
1-〉6 天数 1+2+4+8+16;二进制表示:11111

所以1级到N级的天数是:2的(N-1)次方再减1;
N到M就是先各自求出然后再相减;

////////////////////////////////////////////////////
// 无循环方案:
////////////////////////////////////////////////////
int GetDay(int level)//level表示级别
{
if(level<=0)
return -1;//表示输入的级别不对
int n=1;
n<<(level-1);//n左移level-1位;相当于2的(level-1)次方
n--;
return n;
}