CF1152C Неко делает математику

Идеи:

Предположим, что <= B, LCM (а + к, B + K) = (A + K) * (B + K) / НОД (а + к, Ь + к) = (а + к) * (Ь + к ) / НОД (б - а, а + к) (в соответствии с НОД (а, б) = НОД (Ь - а, а)), так что перечисление б - может быть фактором во всем.

Реализация:

1 #include <. Бит / STDC ++ H>
 2 с  использованием  пространства имен STD;
3 ЬурейеЕ долго  долго LL;
4  Const LL INF = 0x3f3f3f3f3f3f3f3f ;
5 LL кал (LL х, LL у, LL я, LL & Minn, LL & ANS)
 6  {
 7 ,      если (я> х)
 8      {
 9 ,          если (у + я - х < Minn)
 10          {
 11              Minn = у + я - х;
12              ANS = я - х;
13          }
 14     }
 15      еще 
16      {
 17          LL к = 0 ;
18 ,          если (х% я) к = (х / г + 1 ) * я - х;
19          LL т = (х + к) * (у + к) / __gcd (у - х, х + к);
20 ,          если (т < Minn)
 21          {
 22              Minn = т;
23              ANS = K;
24          }
 25      }
 26  }
 27  INT основных ()
 28  {
 29      Л.Л. а, б;
30     в то время как (CIN >> A >> б)
 31      {
 32          LL х = мин (а, б), у = тах (а, б);
33 ,          если (у% х == 0 ) {соиЬ << 0 << епсИ; продолжить ; }
 34          LL Minn = INF, ANS = 0 ;
35          для ( INT I = 1 ; г * г <= у - х; я ++ )
 36          {
 37 ,              если ((у - х)% я == 0 )
 38              {
 39                  кал (х, у, я, Minn, ANS) ;
40 ,                  если((у - х) / I = I!) кал (х, у, (у - х) / я, Minn, ANS);
41              }
 42          }
 43          соиЬ << ANS << епсИ;
44      }
 45      возврата  0 ;
46 }

 

рекомендация

отwww.cnblogs.com/wangyiming/p/10978921.html