C++ 为什么我在这里遇到“由于超时而终止”错误?

C++ 为什么我在这里遇到“由于超时而终止”错误?,c++,arrays,algorithm,C++,Arrays,Algorithm,我正在解决哈克朗的问题 John Watson对整数数组[a[0]、a[1]……a[n]]执行一个称为右循环旋转的操作。执行一个右循环旋转操作后,该数组从[a[0]、a[1]……a[n]]转换为[a[n-1]、a[0]……a[n-2]] Watson执行此操作“k”次。为了测试Sherlock在旋转数组的特定位置识别当前元素的能力,Watson提出了“q”查询,其中每个查询都包含一个整数“m”,您必须在旋转数组的索引处打印元素,即[m]的值 输入格式 第一行分别包含3个空格分隔的整数'n'、'k

我正在解决哈克朗的问题

John Watson对整数数组[a[0]、a[1]……a[n]]执行一个称为右循环旋转的操作。执行一个右循环旋转操作后,该数组从[a[0]、a[1]……a[n]]转换为[a[n-1]、a[0]……a[n-2]]

Watson执行此操作“k”次。为了测试Sherlock在旋转数组的特定位置识别当前元素的能力,Watson提出了“q”查询,其中每个查询都包含一个整数“m”,您必须在旋转数组的索引处打印元素,即[m]的值

输入格式

第一行分别包含3个空格分隔的整数'n'、'k'和'q'。
第二行包含“n”个空格分隔的整数,其中每个整数“i”描述数组元素a[n],其中0原因是您实际上不需要执行旋转,您可以使用古老的数学力量。 执行旋转可能需要100亿arr[i]=arr[i-1]s,执行500次需要一段时间

如果你从序列开始

Element: | 12 | 34 | ... | 56 | 78 |           (1)
Index:      0    1   ...   k-1   k
右转一圈,你就可以

Element: | 78 | 12 | 34 | ... | 56 |           (2)
Index:      0    1    2   ...    k
或者,稍微改变一下视点:

Element: | 12 | 34 | ... | 56 | 78 |           (3)
Index:      1    2   ...    k    0
在1和3中元素的索引之间有一个相当简单的关系,你只需要一些算法就可以从一个元素到另一个元素


发现关系并执行算术只是一个练习。

因为你的代码对于hackerrank来说太慢了。请不要在这里询问有关在线代码判断引擎的问题。任何人都不太可能从他们的测试用例中告诉您失败的地方,因为这些通常不会被披露。即使您测试的是在本地环境中运行的,您也可能错过了测试在线挑战中应用的一些边缘案例。要有创造力,努力找到他们。此外,从长远来看,这类问题可能没有任何价值,除了作弊在线比赛,而且什么也学不到。提示:你不必做轮换。只需调整m的值。一些求和和和模运算使这更简单,并且可能会消除大部分代码。您不必在每个输入旋转值上旋转。任务的目的是找出如何进行一次旋转,顺便说一句,std::rotate将非常方便,实际上,您甚至不需要进行旋转。一旦你有了最终的结果循环,查询索引就可以简单地根据这个循环进行调整。这些编码挑战的全部目的就是找到更好的方法。当然,您可以轻松地对测试用例的所有旋转施加暴力,但是您正在做大量完全不必要的工作。然后你点击了他们更大的测试用例。Pete刚才说的,我认为模运算符可能很方便。看起来像个百分号。谢谢!答案很有帮助!也谢谢你的好意和帮助!!非常尊敬!
Element: | 12 | 34 | ... | 56 | 78 |           (3)
Index:      1    2   ...    k    0