hack
查看原帖
hack
809165
The_Wandering_Earth楼主2023/8/12 16:59

CCF的最后一组数据偏水,很多人做法是这样的,实际上有风险:

string s = "18446744073709551616";
if(k - sum == 64 && n == 0)
{
	cout << s;
}
else 
{
	cout << (one << (k - sum)) - n;//one是ull型的1
}

hack:

1 0 1 64
1

正确输出:

18446744073709551615

正确代码:

string s = "18446744073709551616";
if(k - sum == 64)
{
	if(n == 0)
	{
		cout << s;
	}
	else
	{
		cout << ULLONG_MAX - n + 1;
	}
}
else 
{
	cout << (one << (k - sum)) - n;
}
2023/8/12 16:59
加载中...