现在的位置: 首页 > 综合 > 正文

846

2013年08月11日 ⁄ 综合 ⁄ 共 579字 ⁄ 字号 评论关闭

题目类型: 数学推导

解法:

连续的两个数,判断时注意咯,0,1要单独处理,其他,只要落在k*(k+1)到(k+1)*(k+2),则看是否差值大于k+1,进行处理。。。。

代码:

#include<stdio.h>
#include<math.h>
int main()
{
 int c,i,j,k;
 scanf("%d",&c);
 for(i=0;i<c;i++)
 {
  long a,b,k=0,t;
  scanf("%ld %ld",&a,&b);
 long n =(b-a);
 // scanf("%ld",&n);
 if(!n) {printf("0/n");continue;}
  if( n==1){printf("1/n");continue;}
  t=(long)(sqrt(n)+0.5);
  for(k=t-1;;k++)
  {
   if(k*(k+1)>=n)break;
  }
  if(k*(k+1)==n) {printf("%ld/n",2*k);continue;}
       
   k=k-1;
      t=n-k*(k+1);
  if(t<=k+1){printf("%ld/n",2*k+1);continue;}
        else printf("%ld/n",2*k+2);
 }
 return 0;
}
       

 

            

 

 

 

 

抱歉!评论已关闭.