#include <stdio.h> #include <math.h> int main() { long s,xia,bol,swap,pace,m,n,len1,len2; while(scanf("%d%d",&m,&n)!=EOF) { if(m>n) { swap=m; m=n; n=swap; } if(sqrt(m)*sqrt(m)==m) len1=sqrt(m); else len1=sqrt(m)+1; //求最小数的行数 if(sqrt(n)*sqrt(n)==n) len2=sqrt(n); else len2=sqrt(n)+1; //求最大数的行数 s=len2-len1; if(len1==len2) printf("%ld/n",n-m); else { bol=0; //对bol初始化,若bol为0代表pace未改变 //否则代表pace已经改变 while(s--) { if(len2%2==1&&n%2==0||len2%2==0&&n%2==1) //倒三角形情况 { n=n-2*(len2-1); pace=1; bol=1; if(s==0) break; len2--; } if(len2%2==1&&n%2==1||len2%2==0&&n%2==0) //正三角形情况 { if(bol==0) pace=0; xia=m+(len1+len2-1)*(len2-len1); if(n<=xia) { n=n+1-2*(len2-1); pace+=2; bol=1; //注意将bol改变 len2--; if(len1==len2) break; } else if(n>xia) { n=n-1-2*(len2-1); pace+=2; len2--; if(len1==len2) break; } } } if(m>=n) pace+=(m-n); else pace+=(n-m); printf("%ld/n",pace); } } return 0; }