D

题意:

a<=b<=c

输出A,B,C要求B是A的倍数,C是B的倍数,并且输出a,b,c变成A,B,C需要的最小次数。

题解:写了半天的二分,后来发现思路错了,,,暴力就能过。。

三层for,第二层是第一层的倍数,第三层是第二层的倍数。。。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e4;
const ll INF=1e18+7;
struct stu
{
    ll a,b,c;
}x;
void solve(){
    ll a1,b1,c1;
    cin>>a1>>b1>>c1;
    ll ans=INF;
    for(ll a=1;a<=N;a++){
        for(ll b=a;b<=N+N;b+=a){
            for(ll c=b;c<=N+N+N;c+=b){
                ll sum=abs(c-c1)+abs(b1-b)+abs(a1-a);
                if(sum<ans){
                    ans=sum;
                    x.a=a;
                    x.b=b;
                    x.c=c;
                }
            }
        }
    }
    cout<<ans<<endl;
    cout<<x.a<<" "<<x.b<<" "<<x.c<<endl;
}


int main(){
    ll t;
    ios::sync_with_stdio(0);
    cin>>t;
    while(t--) solve();

    return 0;
}
原文地址:https://www.cnblogs.com/Accepting/p/12385879.html