我们得到一个数字N。我们需要检查给定的数字N是否可以表示为两个的和 太棒了 数字。如果是,则打印这两个大数字,否则打印否。大数字是以以下形式表示的数字:((b)*(b+1)*(2*b+1))/6,其中b是自然数。
null
例如:
Input : N = 35 Output : 5 and 30 Input : 105 Output : 14 and 91 Input : 99 Output : No the given number is not a sum of two great numbers
我们知道((b)*(b+1)*(2*b+1))/6其中b是一个自然数,表示前b个自然数的平方和。例如,如果b=3,那么1+4+9=14。如果所有n个数的和都小于一个大的数,那么我们可以先计算n个大的数。然后,我们将使用两个指针的方法来找到一对可以加起来等于给定数字n的数。
为了计算所有大数的数组,我们将迭代i=0到i
时间复杂度:O(N) 辅助空间:O(N)
本文由 桑克特·辛格2 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END