这是《编程之美》那本书中2.21节描述的那道题目,这里给出一种解法。
void findsequence(int num){
int sum,i,j;
sum=1,i=1,j=2;
for( ; j<num && sum<num ; sum+=j , j++);
for( ; i<j ; ){
if(sum==num && j-i>1){
for(int k=i ; k<j ; k++)
printf("%-4d",k);
printf("\n");
sum-=i;
i++;
}
else if(sum>num){
sum-=i;
i++;
}
else{
sum+=j;
j++;
}
}
}如果你仔细观察一下的话会发现2的幂是无法由连续的整数相加得到的。
本文提供了一种解法,用于找出能通过连续整数之和构成给定数值的所有可能序列。该方法通过调整序列的起始和结束位置来实现,且证明了2的幂次方数无法由连续整数相加得到。
919

被折叠的 条评论
为什么被折叠?



