原题链接:【C语言训练】尼科彻斯定理
http://www.dotcpp.com/oj/problem1127.html
解题思路: 首先,定义整数N;写出N从1到6的每一个数的尼科彻斯等式,观察规律;如下:
N
1^3=1 1=1^2+(1-1)
2^3=3+5 5=2^2+(2-1) 3=1+2
3^3=7+9+11 11=3^2+(3-1) 7=5+2
4^3=13+15+17+19 19=4^2+(4-1) 13=11+2
5^3=21+23+25+27+29 29=5^2+(5-1) 21=19+2
6^3=31+33+35+37+39+41 41=6^2+(6-1) 31=29+2
……………………………………
N^3= 红= (N)^2+(N-1) 蓝=(N-1)^2+((N-1)-1)+2
根据上面规律归纳总结得到:
(1)N等于N个连续奇数的和;
(2)N的尼科彻斯等式中,第一个奇数,等于N-1的尼彻尼科彻斯等式中,最后一个奇数+2;
(3)N-1的尼科彻斯等式中,最后一个奇数等于(N-1)^2+( (N-1)-1);
编程思路就是:
注意事项: 输出“1*1*1=1=”这部分时,如:printf("%d*%d*%d=%.0lf=",N,N,N,pow(N,3)); pow返回值不是int型,故不可以用%d,并且题目输出没有小数;
题目说让验证,不止一组测试值,以文件结束符结束;
运行图:
参考代码:
#include<stdio.h>
#include<math.h>
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
int each_oddnum=pow(N-1,2)+(N-1-1)+2;
printf("%d*%d*%d=%.0lf=",N,N,N,pow(N,3));
for(int i=1;i<N;i++)
{
printf("%d+",each_oddnum);
each_oddnum+=2;
}
printf("%d\n",each_oddnum);
}
return 0;
}