CodeForces 11B Jumping Jack(思维)
题意:数轴上从0出发可向左右走,第i步的距离为i,求到达x的最小步数(x<10^9);
思路:考虑一直向右,若恰好到达则为最小步数;
若路程大于x,且(路程-x)=n,n为偶数,则应向左移动距离n;
要向左移动距离n,只需在第n/2步向左走;步数不变;
若(路程-x)为奇数,一直走到偶数的情况;
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m,sum; int main() { int i,j,k; while(scanf("%d",&n)!=EOF){ if(n<0) n=-n; //printf("%d\n",n); sum=0; for(i=0;;i++){ sum+=i; if(sum==n) break; if(sum>n&&(sum-n)%2==0) break; } printf("%d\n",i); } return 0; }
有些梦想现在不去实现,以后就再也没机会了!!