luzhihao 发表于 2020-2-18 23:16:46

为什么输出不了结果

为什么输出不了结果

SHRS23 发表于 2020-2-18 23:53:39

发代码,别发代码截图,这样想跑一下还得照着图敲一遍。。

jackz007 发表于 2020-2-19 11:41:17

本帖最后由 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>

luzhihao 发表于 2020-2-19 17:20:28

jackz007 发表于 2020-2-19 11:41
答案很简单,经过实际验证,在输入 n = 7 的情况下,sum == cubed 的条件无法得到满足,也就是说, ...

谢谢大佬了
页: [1]
查看完整版本: 为什么输出不了结果