1. 程式人生 > >HPUoj 題目1019 【C語言訓練】尼科徹斯定理(水題,數學)

HPUoj 題目1019 【C語言訓練】尼科徹斯定理(水題,數學)

1019: 【C語言訓練】尼科徹斯定理

時間限制: 1 Sec  記憶體限制: 128 MB
提交: 9  解決: 5
[提交][狀態][討論版]

題目描述

驗證尼科徹斯定理,即:任何一個正整數的立方都可以寫成一串連續奇數的和。

輸入

任一正整數

輸出

該數的立方分解為一串連續奇數的和

樣例輸入

13

樣例輸出

13*13*13=2197=157+159+161+163+165+167+169+171+173+175+177+179+181

提示

本題是一個定理,我們先來證明它是成立的。

對於任一正整數a,不論a是奇數還是偶數,整數(a×a-a+1)必然為奇數。

構造一個等差數列,數列的首項為(a×a-a+1),等差數列的差值為2(奇數數列),則前a項的和為:

a×((a×a-a+1))+2×a(a-1)/2

=a×a×a-a×a+a+a×a-a

=a×a×a

定理成立。證畢。

通過定理的證明過程可知L所要求的奇數數列的首項為(a×a-a+1),長度為a。程式設計的演算法不需要特殊設計,可按照定理的證明過直接進行驗證。

來源

[提交][狀態][討論版]

題目都給出了,不過這個定理有點意思

ac程式碼

#include<stdio.h>
int main()
{
	int a;
	while(scanf("%d",&a)!=EOF)
	{
		int m=a*a-a+1,i;
		printf("%d*%d*%d=%d=%d",a,a,a,a*a*a,m);
		for(i=1;i<a;i++)
		{
			m+=2;
			printf("+%d",m);
		}
		printf("\n");
	}
}