蒟蒻

水题P1867

2021-04-19 19:45:56


上周教练刚讲完结构体,今天随机跳题第一道就这个,于是就来做了。

这题没什么好讲的,直接上代码:

#include<iostream>//输入输出
#include<cmath>//pow函数
using namespace std;//命名空间

auto d=new double;//每次扣掉的生命值
auto life=new double(10);//生命值
//不要在意我为什么要用new(

struct{
    int lv=0;//等级
    int exp;//经验

    void cal_lv(){
        while(this->exp>=(int)pow(2,this->lv)){
            this->exp-=(int)pow(2,this->lv);
            this->lv++;
        }//有可能一次的经验值可生多次级
    }//计算等级函数
}LV;//存储等级和经验值以及一个计算等级的函数

int main(){
    cin>>*d;//读入个数(虽然我用while这玩意没用)
    while(cin>>*d>>LV.exp){
        *life-=*d;
        if(*life<=0)break;//生命小于等于0就死了
        if(*life>10)*life=10;//生命值上限为10
        LV.cal_lv();//计算等级和经验值
    }//循环读入
    cout<<LV.lv<<' '<<LV.exp;//输出答案
    delete d;
    delete life;//既然用了new就别忘了delete

    return 0;
}