搭積木的訣竅
阿新 • • 發佈:2018-12-07
題目描述
小Q的程式設計技術在一次搭積木比賽中也成了祕密武器。原來,比賽的規則是這樣的:給你N個小木塊(全部為一樣大小的正方體),快速搭成如下圖規則的形狀(下圖為5層的規模),要求層數為最大限度。由於小Q編了個程式,只要輸入小木塊個數N,就可以馬上求出最多可以搭幾層,還剩幾個,所以小Q每次都是一次成功,從不需要翻工,速度也就領先了。你會編小Q這樣的程式嗎?
輸入
只有一個整數N,表示小木塊的個數,已知1≤N≤30000。
輸出
有兩行整數,第一行是最多可以堆的層數,第二行是剩餘的小木塊數。
樣例輸入
複製樣例資料
37
樣例輸出
5
2
#include <stdio.h> #include <stdlib.h> int main() { int n,ans,m,i,s=1; scanf("%d",&n); for(i=1;;i++) { n=n-s; m=n; s=s+i+1; if(n<0) { m=m+s-i-1; break; } } ans=i-1; printf("%d\n",ans); printf("%d\n",m); return 0; }