ご覧のとおり、制限時間を超えています。
空のスペースの静的変数を 10 個ほど用意し、それらを連結してより大きなスペースを形成するというアイデアを誰かが私に与えてくれたので、2 のべき乗を実行してそれを実行しようとしました。コードは機能しますが、明らかに非常に遅いです。これを行うより速い方法は何ですか?
std::string operator*(std::string const &s, size_t n)
{
std::string r;
r.reserve(n * s.size());
for (size_t i=0; i<n; i++)
r += s;
return r;
}
std::string operator^(std::string const &s, size_t n)
{
std::string r = s;
for (size_t i = 1; i < n; i++)
{
r = s * r.size();
}
if (n == 0) return std::string(" ");
return r;
}
int main()
{
string blank = " ";
string blank2 = blank * 2;
string blank4 = blank2 ^ 2;
string blank8 = blank2 ^ 3;
string blank16 = blank2 ^ 4;
for (int i = 0; i < 100; i++)
assert((blank2 ^ i).size() == pow(2, i));
return 0;
}