如果有很多(这种规律) 的数字 1 4 9 16 25
问题:1+4+16 =21
怎么通过21得到 1,4,16 这个几个数,,,
这个算法如何实现
先从1开始枚举i,当i^2大于n(你读入的数)时跳出并记录i-1,比如读入21时i=5就跳出了,记录一个4,然后重复这个操作直到1
代码如下,
void Function(int k) {
if (k == 1) {
printf("1\n");
return;
}
int i;
for (i = 1; i * i <= k; i++);
i--;
Function(k - i * i);
printf("%d\n", i * i);
}
例如输入21就会输出:
1
4
16
望采纳
同学,题目不说清楚,怎么写答案?
你这个是要循环,还是要得到那个数啊
def calc(x): t = int(math.sqrt(x)) #求平方根,然后向下取整 print t #打印满足条件的值 y = x - pow(t,2) #返回余数 return y st = 21 #欲测试的值 while True: ret = calc(st) if ret==0: #当余数为0时跳出循环 break st = ret
另外你的问题没有说清楚,一些细节,包括这个结果中的数能否重复等等都没有说明
上面仅仅提供一个思考的思路,需要求多种组合,还需要改善
计算机最强大的功能就是穷举