CF1152C. Neko does Maths

CF1152C
http://codeforces.com/contest/1152/problem/C

大意:給兩個數(shù)a,b。讓你找一個k,使得a+k與b+k的最小公倍數(shù)盡可能小,輸出k
思路: gcd(a,b) = gcd(b,a-b),最終得到的A,B,他們的gcd一定是a-b的因子

#include <bits/stdc++.h>
using namespace std;

// gcd(a,b) = gcd(b,a-b); -> (a-b)%gcd(a,b)==0
long long a,b,diff;
vector<long long> v;
int main(){
    cin>>a>>b;
    if(a>b)swap(a,b);
    diff = b-a;

    if(diff==0){
        cout<<0<<endl;
        goto _end;
    }
    long long ac,temp;
    ac=0,temp=diff+7;
    for(long long i=1;i*i<=diff;++i){ //枚舉因子
        if(diff%i==0){
           v.push_back(i);
           v.push_back(diff/i);
        }
    }
    sort(v.begin(),v.end());
    int pos;
    pos = lower_bound(v.begin(),v.end(),a)-v.begin();
    if(pos<v.size()){
        ac = v[pos];
    }else
    while(ac<a){
        ac += diff; //如果上面沒找見>=a的因子,那么找diff的倍數(shù)直到>=a
    }
    cout<<ac-a<<endl;

_end:
    return 0;
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基本運(yùn)算 取模(mod)取余(rem) 定義 給定一個正整數(shù)p,任意一個整數(shù)n,一定存在等式 : n = kp +...
    passwd_閱讀 2,291評論 0 3
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,053評論 0 2
  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 11,148評論 0 23
  • 幼兒園中班體育游戲:連體人 有益的學(xué)習(xí)經(jīng)驗(yàn): 學(xué)習(xí)與同伴合作同共同做好一件事,體會協(xié)作游戲的快樂。 準(zhǔn)備:報紙若干...
    星空之下王鳳琴閱讀 713評論 0 3
  • 感賞兒子一天很乖順,自覺。早晨希望他早點(diǎn)起床,他很不愿意,沒有按照昨晚的約定去做,我很不高興,后來及時抽離,...
    金色陽光魏艷春閱讀 323評論 0 0

友情鏈接更多精彩內(nèi)容