标签:printf for n+1 i++ lib ret class 相加 穷举
尼科彻斯定理简单来想其实可以是这样,我们假设有一个数N,则他的立方为N*N*N,可以看成为N个N*N在相加,此时若N为奇数,那么则有从N*N-(N-1)/2*2,即为N*N-N+1开始到N*N+N-1为止的奇数相加的值,同样,若为偶数可得出相应的结论从N*N-1-(N/2-1)*2,即为N*N-N+1到N*N+N-1为止。
这和书上的不太一样,但书上的用的好像是穷举的方法,这样算的话,应该比书上的方法要快得多了。明白了这个道理,那么直接开始编程就可以了。
代码如下:
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void Test(int n) 5 { 6 int t,startNumber; 7 if(n%2 == 0) 8 { 9 t = n/2-1; 10 startNumber = n*n-1-t*2; 11 } 12 else 13 { 14 t = n/2; 15 startNumber = n*n - t*2; 16 } 17 printf("%d*%d*%d = %d = %d ",n,n,n,n*n*n,startNumber); 18 for(int i = 1;i<n;i++) 19 printf("+ %d",startNumber+i*2); 20 } 21 22 int main() 23 { 24 int n; 25 while(~scanf("%d",&n) && n) 26 { 27 Test(n); 28 } 29 return 0; 30 }
标签:printf for n+1 i++ lib ret class 相加 穷举
原文地址:http://www.cnblogs.com/FWFC/p/6337707.html