CF1152C猫は数学を行います

アイデア:

<= B、LCM(A + K、B + K)=(A + K)*(B + K)/ GCD(A + K、B + K)=(A + K)*(B + Kを想定)/ GCD(B - 、A + K)(GCDに従って(A、B)= GCD(B - A))ので、Bを列挙 - 全ての要因であることができます。

実装:

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3 typedefの長い 長いLL。
4  CONST LL INF = 0x3f3f3f3f3f3f3f3f 5 LL CAL(LLのX、LL Y、LL I、LL&ミネソタ州、LL&ANS)
 6  {
 7      場合(I> x)の
 8      {
 9          もし(Y + I - X < ミネソタ州)
 10          {
 11              ミネソタ州= Y + I - X;
12の              ANS = I - X;
13          }
 14     }
 15      他の
16      {
 17          のLL K = 0 18          であれば(X%I)K =(X / I + 1)* I - X。
19          のLL T =(X + K)*(Y + K)/ __gcd(Y - X、X + K)。
20          であれば(T < ミネソタ州)
 21          {
 22              ミネソタ州= T。
23の              ANS = K。
24          }
 25      }
 26  }
 27  のint main()の
 28  {
 29      LLのA、B。
30     一方、(CIN >> A >> B)
 31      {
 32          LL X =分(a、b)は、Y = MAX(A、B)。
33          であれば(Y%のX == 0){COUT << 0 << ENDL。続け; }
 34          LLミネソタ州= INF、ANS = 0 35          のためには、int型 i = 1 ; iは= Y <* - Xは、iが++ 36          {
 37              であれば((Y - X)%I == 0 38              {
 39                  CAL(X、Y、I、ミネソタ州、ANS) ;
40                  もし(!(Y - X)/ I = I)CAL(X、Y、(Y - X)/ I、ミネソタ州、ANS)。
41              }
 42          }
 43          COUT << ANS << ENDL。
44      }
 45      リターン 0 46 }

 

おすすめ

転載: www.cnblogs.com/wangyiming/p/10978921.html
おすすめ