#55037: 仔細觀察數學規律(較大完全奇數及較小完全奇數之差有特定公式)之後的簡單解法


s291140@nehs.hc.edu.tw (H10506何重進)


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

int main(){
    string N;
    while (cin >> N){
        int c = 0;
        int index = 0;
        int l = N.length();
        bool has_even = false; 
        for(int i = 0; i < l; i++){
            if((N[i] - '0') % 2 == 1){
                continue;
            } else {
                c = N[i] - '0';
                index = i;
                has_even = true;
                break;
            }
        }
        if (!has_even){
            cout << 0 << "\n";
        } else {
            long long n_0 = 0;
            long long n_1 = 0;
            
            for(int i = 0; i < l; i++){
                n_0 = n_0 * 10 + (N[i] - '0');
            }
            for(int i = 0; i < index; i++){
                n_1 = n_1 * 10 + (N[i] - '0');
            }
            n_1 = n_1 * 10 + c + 1;
            for(int i = index + 1; i < l; i++){
                n_1 = n_1 * 10 + 1;
            }
            int p_len = 0;
            if (c >= 2) {
                p_len = l - index; 
            } else {
                int k = index - 1;
                while (k >= 0 && N[k] == '1') {
                    k--; 
                }
                if (k >= 0) {
                    p_len = l - k; 
                } else {
                    p_len = l - 1; 
                }
            }
            long long p = 0;
            for(int i = 0; i < p_len; i++){
                p = p * 10 + 1;
            }
            p = p + 1;
            if (n_1 - n_0 < p - (n_1 - n_0)){
                cout << n_1 - n_0 << "\n";
            } else {
                cout << p - (n_1 - n_0) << "\n";
            }
        }
    }
    return 0;
}