我有一个级数“ a”,其中给出了前两个数字(a1和a2),每个下一个数字都是子数组的最小总和,该子数组大于前一个数字。
例如,如果我有a1 = 2和a2 = 3,那么进展将是
2,3,5(= 2 + 3),8(= 3 + 5),10(= 2 + 3 + 5),13(= 5 + 8),16(= 3 + 5 + 8),18( = 2 + 3 + 5 + 8 = 8 + 10),23(= 5 + 8 + 10 = 10 + 13),26(= 3 + 5 + 8 + 10),28(= 2 + 3 + 5 + 8 +10),29(= 13 + 16)...
我需要在此进程中找到第N个数字。(时间限制为0.7秒)
(a1小于a2,a2小于1000,N小于100000)
我尝试了优先级队列,设置,映射,https://www.geeksforgeeks.org/find-subarray-with-given-sum/和其他一些东西。
我虽然优先级队列可以工作,但是它超出了内存限制(256 MB),所以我几乎没有希望。
这是目前表现最好的。
int main(){
int a1, a2, n; …Run Code Online (Sandbox Code Playgroud)