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; }