http://poj.openjudge.cn/challenge3/0/ios
爲了防止爆零而加入了一道熱身題。你們輕虐~
Picks在參加NOI(網上同步賽)時,看到你們都在瘋狂討論「圈地遊戲」,因而Picks對這個遊戲很!好!奇!他想本身開發一個Bot來玩。測試
不過Picks水平不行……寫一個複雜的程序對他太難了,因而他簡化了一下,使得場上只有他寫的Bot,且場地大小無限。spa
圈地遊戲的規則是:Bot可以水平或者縱向移動 1 格,每次移動能夠選擇是否落筆,在落筆狀態下就會畫出軌跡。每當曾經本身走到的軌跡上時,圍成的封閉圖形就歸它全部,獲得這塊區域的分數,而且軌跡消失。
請注意!在本題中,獲得的分爲圈住的地的面積。
爲了打倒他的幻想對手,他給本身限定了一個分數 K,只有在得分很多於 K 時他纔會知足。他很想知道他最少要移動多少次?code
數據範圍
blog
1 2 8
4 6 12
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int main(){ //freopen("input.txt","r",stdin); long long n; while(~scanf("%lld",&n)){ if(n==1){ puts("4"); }else if(n==2){ puts("6"); }else if(n==3 || n==4){ puts("8"); }else{ long long ans=8; long long x=(long long)sqrt(n-1); long long tmp=x*x+1; if(n-tmp+1<=x) ans+=2+(x-2)*4; else ans+=4+(x-2)*4; cout<<ans<<endl; } } return 0; }