理清思路就好了,不过答案判定好像有问题,但是我写的不妨碍通过测试
有不懂得可以在评论区说出,一起讨论
#include<stdio.h>
int main(void)
{
int x;
int sum=0;
int t,i;
int count;//count是用来判断连续奇数的个数是否和输入的x相等
while(scanf("%d",&x)!=EOF)
{ int x3=x*x*x;
for(i=1;i<=x3/2+1;i=i+2)//这里的界限x3/2+1是我试出来的,原本写的是x3或者x3/2,结果都不行,联想2的立方是8,3+5,试了下最大的5(即8/2+1)就通过测试了(汗。。。)
{ sum=0;
count=0;
for(int k=i;sum<x3;k=k+2)//判断输出时从哪个奇数开始输出
{
sum+=k;
count++;
if(sum==x3&&count==x)
{
t=i; //获取输出定位时的i
}
}
}
printf("%d*%d*%d=%d=",x,x,x,x3);//输出第一段
for(int l=1;l<x;l++,t+=2)//输出第二段
{
printf("%d+",t);
}
printf("%d",t);
printf("\n");//输出第三段
}
return 0;
}