Как устранить эту ошибку во время выполнения в коде - PullRequest
0 голосов
/ 17 апреля 2020

Задача EvenDigits из Kickstart 2018 Round-A

Задача

У Supervin есть уникальный калькулятор. Этот калькулятор имеет только дисплей, кнопку плюс и кнопку минус. В настоящее время на дисплее калькулятора отображается целое число N.

Нажатие кнопки «плюс» увеличивает текущее число, отображаемое на дисплее калькулятора, на 1. Аналогичным образом нажатие кнопки «минус» уменьшает текущее число, отображаемое на дисплее калькулятора, на 1. Калькулятор не отображает начальные нули. Например, если на дисплее калькулятора отображается 100, однократное нажатие кнопки «минус» вызовет отображение на калькуляторе 99.

Супервин не любит нечетные цифры, потому что он считает их «нечетными». Поэтому он хочет отобразить целое число только с четными цифрами в десятичном представлении, используя только кнопки калькулятора. Поскольку калькулятор немного устарел, а кнопки трудно нажимать, он хочет использовать минимальное количество нажатий кнопок.

Пожалуйста, помогите Supervin определить минимальное количество нажатий кнопок, чтобы калькулятор отображал целое число без нечетных цифр.

Вход

В первой строке ввода указано количество тестовых случаев, за которыми следуют T. Каждая строка начинается с одной строки, содержащей целое число N: целое число, первоначально отображаемое в калькуляторе Супвина.

Выходные данные

Для каждого тестового примера выведите одну строку, содержащую регистр #x: y, где x - номер тестового набора (начиная с 1), а y - минимальное количество нажатий кнопок, как описано выше.

Пределы

1 ≤ T ≤ 100.
Time limit: 20 seconds per test set.
Memory limit: 1GB.

Маленький набор данных (тестовый набор 1 - видимый)

1 ≤ N ≤ 105.

Большой набор данных (тестовый набор 2 - скрытый)

1 ≤ N ≤ 1016.

Образец

Ввод

4
42
11
1
2018

Выход

Case #1: 0
Case #2: 3
Case #3: 1
Case #4: 2



#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{
    int t,flag,c1;
    long long int x,y;
    char c[6]={'0','2','4','6','8'};
    string s,s1,s2;
    cin>>t;
    for(int k=1;k<=t;k++)
    {
        c1=0;
        cout<<"Case #"<<k<<": ";
        cin>>s;
        s1=s;
        s2=s;
        for(int i=0;s[i];i++)
        {
            flag=0;
            for(int j=0;c[j];j++)
            {
                if(s[i]==c[j])
               {
                flag=1;
                c1++;
                break;
               }

            }
            if(flag==0&&i!=s.length()-1)
            {
                s1[i]=s[i]-1;
                s2[i]=s[i]+1;
            }
           if(i==s.length()-1)
            {
                s1[i]='8';
                s2[i]='0';
            }
        }

        if(c1==s.length())
        cout<<"0"<<endl;
        else
        {
         x=abs(stoi(s)-stoi(s1));
         y=abs(stoi(s)-stoi(s2));
         if(x<y)
         cout<<x<<endl;
         else
         cout<<y<<endl;
        }
    }
}
...