水题P1867
cygnus_beta
2021-04-19 19:45:56
上周教练刚讲完结构体,今天随机跳题第一道就这个,于是就来做了。
这题没什么好讲的,直接上代码:
```cpp
#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;
}
```