P1867 【Mc生存】经验值

P1867 【Mc生存】经验值

提交16.06k

通过6.39k

时间限制1.00s

内存限制125.00MB

提交答案加入题单复制题目

做题计划(首页)

个人题单

团队题单

保存

选择团队

保存

题目提供者onlyme

难度入门

历史分数100

 提交记录  查看题解

标签

洛谷原创

 查看算法标签

进入讨论版

相关讨论

 查看讨论

推荐题目

 查看推荐

 洛谷推荐关闭

 复制Markdown  展开

题目背景

初一福利第2弹。。。

题目描述

话说 clearman 在 MC 世界开了个祥艺奶牛场,用熔浆、TNT 等丧心病狂的折磨牛,获取牛肉、牛奶等刷经验。他想知道他到底达到什么层次。

他总共进行了 nn 项操作,每次操作要付出 xx 生命值(初始生命是 1010 点,初一党都知道!并且要先计算付出的生命值,如果小于等于 00,则死亡,本次即以下操作都无效。但切记:付出生命值可以是负数,也就是说可以回复 -x−x 点生命值,但上限只能是 1010!切记!),每次操作可以获得 aa 经验值(不能为负),他最后能达到 mm 级 tt 经验。

P.S. 关于等级

初始等级为 00。每加 2^m2m(mm 为当前等级)点经验可升一级。

1、假设 clearman 一共得到 1515 点经验,那么他应该为 44 级( 15-1-2-4-8=015−1−2−4−8=0)加 00 点经验。
2、假设 clearman 一共获得 3939 点经验,那么他应该为 55 级( 39-1-2-4-8-16=839−1−2−4−8−16=8)加 88 点经验。

输入格式

第一行一个正整数 nn,表示操作个数。

接下来 nn 行,每行两个数,为 clearman 的一次操作。

输出格式

一行,为等级和经验值。

输入输出样例

输入 #1复制

2
5.5 15
4.5 24

输出 #1复制

4 0

说明/提示

数据很弱,人肉输的,但是很坑。。。

【数据范围】
对于 100\%100% 的数据,1\le n \le 201≤n≤20。

 【AC代码】

#include<bits/stdc++.h>
using namespace std;
inline int fread()
{
	char ch=getchar();
	int n=0,m=1;
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')m=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();
	return n*m;
}
int n,a,ans;
double f=10,x;
signed main(int argc,char **argv)
{
	n=fread();
	while(n--)
	{
		cin>>x>>a;
		f=min(f-x,10.0);
		if(f<=0)break;//这个地方很坑,血量有可能是零点几......
		ans+=a;
	}
	cout<<floor(log(ans+1)/log(2))<<" "<<ans+1-pow(2,floor(log(ans+1)/log(2)));
	return 0;
}
R76479727 记录详情

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值