c++语言编程 经验值

描述
小T最近在玩一个游戏,在游戏中创建了一个初始等级0的角色。

游戏中,每个等级升级所需的经验值是这样计算的:

第 i 级升级所需经验为2^i

例如:

第0级升级所需经验:2^0=1
第1级升级所需经验:2^1=2
第2级升级所需经验:2^2=4

当小T的角色获得 k点经验值时,对应的等级是多少?以及还需要多少经验才能刚好达到下一级?

输入格式
第一行一个整数 k ,表示获得的经验值。

输出格式
第一行一个整数表示对应的等级
第二行一个整数表示还需要多少经验才能刚好达到下一级

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7543181
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以帮你解决这个问题。

    首先,我们可以使用一个循环来计算小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;
}