2645(2).cpp

来自「pku解题」· C++ 代码 · 共 44 行

CPP
44
字号
#include <stdio.h>
#include <iostream>
 int main()
 {
     __int64 a,b,tmp;
     int f,st,ed,mid,i;
     while(scanf("%I64d%I64d",&a,&b)&&(a||b))
     {
         if(a==b)
         {
             printf("2 0\n");
             continue;
         }
         else if(a==0)
         {
             printf("0 2\n");
             continue;
         }
         f=0;
         for(i=2;i<=50000;i++)
         {
             st=1,ed=i-1;
             while(st<=ed)
             {
                 mid=(st+ed)/2;
                 tmp=(b-a)*mid*mid-a*(i-mid)*(i-mid)-2*a*mid*(i-mid)+a*(i-mid)-(b-a)*mid;
                 if(tmp>0) ed=mid-1;
                 else if(tmp<0) st=mid+1;
                 else
                 {
                     f=1;
                     printf("%d %d\n",mid,i-mid);
                     break;
                 }
                 if(f) break;
             }
             if(f) break;
         }
         if(!f) printf("impossible\n");
     }
     system("pause");
     return 0;
 }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?