描述
小T最近在玩一个游戏,在游戏中创建了一个初始等级0的角色。
游戏中,每个等级升级所需的经验值是这样计算的:
第 i 级升级所需经验为2^i
例如:
第0级升级所需经验:2^0=1
第1级升级所需经验:2^1=2
第2级升级所需经验:2^2=4
当小T的角色获得 k点经验值时,对应的等级是多少?以及还需要多少经验才能刚好达到下一级?
输入格式
第一行一个整数 k ,表示获得的经验值。
输出格式
第一行一个整数表示对应的等级
第二行一个整数表示还需要多少经验才能刚好达到下一级
我可以帮你解决这个问题。
首先,我们可以使用一个循环来计算小T的等级。在每次循环中,我们将经验值减去当前等级升级所需的经验值,直到经验值小于当前等级升级所需的经验值为止。此时,等级就是当前循环的次数。
接下来,我们可以使用一个变量来存储下一级升级所需的经验值。我们可以使用一个循环,在每次循环中将下一级升级所需的经验值乘以2,直到经验值大于获得的经验值为止。此时,下一级升级所需的经验值就是当前循环的结果减去获得的经验值。
下面是一个示例代码来解决这个问题:
#include <iostream>
int main() {
int exp;
std::cin >> exp;
int level = 0;
int level_exp = 1;
while (exp >= level_exp) {
exp -= level_exp;
level++;
level_exp *= 2;
}
int next_exp = level_exp - exp;
std::cout << "等级: " << level << std::endl;
std::cout << "还需经验: " << next_exp << std::endl;
return 0;
}
请注意,上述代码假定输入的经验值是一个整数,且大于等于0。如果输入的经验值为负数,代码将无法正确处理。
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int k;
cin >> k;
int i = 0;
int exp = 0;
while (exp <= k)
{
exp += pow(2, i);
i += 1;
}
cout << i - 1 << endl;
cout << exp - k << endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int main(){
int k;
cin>>k;
int ans=0,dif;
while(dif<=k)
{
ans++;
dif+=pow(2,ans);
}
cout<<ans<<endl;
cout<<dif-k<<endl;
}