求助
  • 板块P1582 倒水
  • 楼主2151782wb
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/15 20:42
  • 上次更新2023/10/27 02:50:54
查看原帖
求助
784925
2151782wb楼主2022/11/15 20:42
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int num = 1e3;
ll mi[num]={0,1};
ll n, k;
ll* p;
int i;
int main() {
	cin >> n >> k;
	for ( i = 1; mi[i] < n;)
		mi[++i] = mi[i - 1] * 2;
	while (k--&&n>0) {
		p = lower_bound(mi, mi + i, n);
		if (*p > n)
			n -= *p / 2;
		else
			n -= *p;
	}
	if (n == 0)
		cout << 0 << endl;
	else
		cout << *p / 2 - n << endl;
	return 0;
}

第一个点 in:27 2 out:5 输出是对的,但wa

2022/11/15 20:42
加载中...