吐槽:这道题数据似乎很弱,没有卡掉结尾处理错误的代码。
查看原帖
吐槽:这道题数据似乎很弱,没有卡掉结尾处理错误的代码。
1333477
Reject楼主2024/7/24 02:26
#include <bits/stdc++.h>
typedef long long LL;
using namespace std;

string s1;
LL pos;

int main() 
{
	cin >> s1 >> pos;
	LL cd = s1.length();
	s1 = " " + s1;
	LL cs = log(pos / cd) / log(2) + 1;
	while(pos > cd)
	{
		LL l = cd * (1ll << cs);
		while(l >= pos) cs--, l = cd * (1ll << cs);  
		pos -= l;
		pos--;
		if(pos == 0) pos = 1; // 这里写错了
	}
	cout << s1[pos];
	return 0;
}

当pos等于0时,应该是前面那一串中的最后一个字符,即pos = l(指应该是变量l,而这段代码中写的数字1),但是代码写太快,写错了,交上去发现过了。随便的一个数据比如:COW 4 就可以卡掉。

2024/7/24 02:26
加载中...