检查给定的数字是否可以表示为两个大数字的和

我们得到一个数字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 14和91

时间复杂度:O(N) 辅助空间:O(N)

本文由 桑克特·辛格2 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享