CF136B 题解

· · 题解

题目传送门

思路

要使 b 最小,就要使 b 在三进制下每一位最小。因此列出式子,b_i=(c_i-a_i+3)\mod3a_i,b_i,c_i 分别表示 a,b,c 的三进制从右数的第 i 位)。

AC CODE

#include<bits/stdc++.h>
using namespace std;
int a,b,c,p=1;
int main(){
    scanf("%d%d",&a,&c);
    while(a||c){
        b+=(c%3-a%3+3)%3*p;
        a/=3,c/=3,p*=3;
    }
    printf("%d",b);
    return 0;
}