一个算法问题,,

如果有很多(这种规律) 的数字 1  4  9  16 25 

问题:1+4+16 =21

怎么通过21得到  1,4,16 这个几个数,,,

这个算法如何实现


郎朗坤
浏览 743回答 1
1回答

哈士奇WWW

先从1开始枚举i,当i^2大于n(你读入的数)时跳出并记录i-1,比如读入21时i=5就跳出了,记录一个4,然后重复这个操作直到1代码如下,void Function(int k) {&nbsp;&nbsp; &nbsp;if (k == 1) {&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;printf("1\n");&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return;&nbsp;&nbsp; &nbsp;}&nbsp;&nbsp; &nbsp;int i;&nbsp;&nbsp; &nbsp;for (i = 1; i * i <= k; i++);&nbsp;&nbsp; &nbsp;i--;&nbsp;&nbsp; &nbsp;Function(k - i * i);&nbsp;&nbsp; &nbsp;printf("%d\n", i * i);}例如输入21就会输出:1416望采纳
打开App,查看更多内容
随时随地看视频慕课网APP