數字排列(等差數列計算)

【問題描述】

觀察下列數字的排列規律。

問題:給你一個正整數n,輸出n所在的行x和列y。

其中數字排列方式如圖所示:

【輸入】

一個正整數n

【輸出】

n所在的行x和所在的列y,x和y之間用一個空格隔開。

【樣例輸入輸出】

c.in c.out
9
3 2

【數據範圍】

50%的數據,n<=1 000 000;

100%的數據,n<=1 000 000 000。

代碼實現:

#include <stdio.h>
int main(){
int i,x=1,y=1;
long int sum,s;
freopen("c.in","r",stdin);
scanf("%d",&s);
i=1;sum=1;
while(sum<s){ //計算等差數列,並於輸入進行比較
i++;
sum=sum+i;


}
if(i%2==0){ //根據i是否爲偶數(由圖可得i爲基數和偶數時數字的增長方向剛好相反)
y=sum-s+1;
x=i-sum+s;
}else{
y=i-sum+s;
x=sum-s+1;
}
freopen("c.out","w",stdout);
printf("%d %d\n",x,y);
return 0;
}

注意:需要在工程文件夾下建立c.in用於讀取輸入數據,代碼運行後輸出結果不再控制檯顯示,而是存儲到工程文件夾下的c.out文件中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章