为什么输出不了结果
为什么输出不了结果 发代码,别发代码截图,这样想跑一下还得照着图敲一遍。。 本帖最后由 jackz007 于 2020-2-19 12:05 编辑答案很简单,经过实际验证,在输入 n = 7 的情况下,sum == cubed 的条件无法得到满足,也就是说,问题无解!
这个代码只有在满足 n 是一个完全平方数的时候才会有解,就是说,只有在 n = 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 , 100 ,... 的时候才能有解,不信,你可以试。
下面,我们不用键盘输入,而是改用循环,在 n = 2 ~ 100 的范围内,把有解的 n 值直接扫描出来:
#include <stdio.h>
main()
{
int i , j , n , cubed , sum ;
bool f ;
for(n = 2 ; n < 101 ; n ++) {
cubed = n * n * n ;
for(sum = 0 , f = true , i = 1 ; f && i < cubed ; i += 2) {
for(j = 1 ; f && j < cubed ; j += 2) {
sum += j ;
if(sum == cubed) {
if(j - i > 4) printf("n = %3d : %d = %d + %d...+ %d\n" , n , cubed , i , i + 2 , j) ;
else printf("n = %3d : %d = %d + %d + %d\n" , n , cubed , i , i + 2 , i + 4) ;
f = false ;
} else if (sum > cubed) {
sum = 0 ;
break ;
}
}
}
}
}
编译、运行实况:
C:\Bin>g++ -o x x.c
C:\Bin>x
n = 4 : 64 = 1 + 3...+ 15
n = 9 : 729 = 1 + 3...+ 53
n =16 : 4096 = 1 + 3...+ 127
n =25 : 15625 = 1 + 3...+ 249
n =36 : 46656 = 1 + 3...+ 431
n =49 : 117649 = 1 + 3...+ 685
n =64 : 262144 = 1 + 3...+ 1023
n =81 : 531441 = 1 + 3...+ 1457
n = 100 : 1000000 = 1 + 3...+ 1999
C:\Bin>
jackz007 发表于 2020-2-19 11:41
答案很简单,经过实际验证,在输入 n = 7 的情况下,sum == cubed 的条件无法得到满足,也就是说, ...
谢谢大佬了
页:
[1]