GumpYu 发表于 2019-3-18 09:19:29

新手的每日一问

#include <stdio.h>

int main()
{
      int i, j, n, cubed, sum = 0;

      printf("请输入一个整数:");
      scanf("%d", &n);

      cubed = n * n * n;

      for (i = 1; i < cubed; i += 2)
      {
                for (j = i; j < cubed; j += 2)
                {
                        sum += j;
                        if (sum == cubed)
                        {
                              if (j - i > 4)
                              {
                                        printf("%d = %d + %d ... + %d\n", cubed, i, i+2, j);
                              }
                              else
                              {
                                        printf("%d = %d + %d + %d\n", cubed, i, i+2, i+4);
                              }
                              goto FINDIT;
                        }

                        if (sum > cubed)
                        {
                              sum = 0;
                              break;
                        }
                }
      }

FINDIT:

      return 0;
}


在课后作业验证尼科彻斯定理为什么j-i>4而不是大于3(虽然自己试了确实也需要大于4{:10_304:} )

wp231957 发表于 2019-3-18 11:12:52

#include<stdio.h>

int main()
{
   int i,c=0;
   for(i=1;i<=40;i++)
   {
           int t=(i-1)*i+1;
           int sum=t*i+i*(i-1);
           if(i*i*i==sum) c++;
   }
   printf("%d\n",c);
   return 0;
}

既然是验证那就直接验证好了

ba21 发表于 2019-3-18 11:20:43

2的三次方=3+5 ; 3的三次方=7+9+11; 4的三次方=13+15+17+19;

不信你输个2试试看,对不对。
(j - i > 4) 只是为了输出的时候以什么样子输出,小于等于4位就
这样输出:
请输入一个整数:3
27 = 7 + 9 + 11
大于4位则这样输出,加几个..中间的用...省略
请输入一个整数:8
512 = 17 + 19 ... + 47

换句话说,这里你想改成怎么输出都可以,多几个if就全搞定了

GumpYu 发表于 2019-3-20 22:47:47

ba21 发表于 2019-3-18 11:20
2的三次方=3+5 ; 3的三次方=7+9+11; 4的三次方=13+15+17+19;

不信你输个2试试看,对不对。


好的,谢谢了

GumpYu 发表于 2019-3-21 15:12:59

wp231957 发表于 2019-3-18 11:12
既然是验证那就直接验证好了

{:10_256:}谢咯
页: [1]
查看完整版本: 新手的每日一问