4ios
貪心作法,先把 x寫成1+2+3+.....+n+n-1+n-2+n-3+....+2+1的形式,再把剩下的放進去。spa
上面的式子等於 n^2,因此先判斷x是否爲平方數,若是是的話直接輸出 2*k-1,若是不是在加上剩下。ip
#include<map> #include<stack> #include<queue> #include<math.h> #include<vector> #include<string> #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> #define mem(a,b) memset(a,b,sizeof(a)) #define maxn 1100000 #define maxm 1000000000005 #define mod 1000000007 #define ll long long #define inf 0x3f3f3f3f using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ ll x,y;scanf("%lld%lld",&x,&y); if(x==y){ printf("0\n");continue; } ll k=sqrt((y-x)*1.0); if(k*k==y-x)printf("%lld\n",2*k-1); else { ll ans=(y-x)-k*k; ll ans1=2*k-1; while(ans!=0){ ans1+=(ans/k); ans%=k; k--; } printf("%lld\n",ans1); } } }