Решение задачи Быки и коровы с Acmp

Без пояснения   Просмотров: 22


Петя и Вася часто играют в различные логические игры. Недавно Петя поведал Васе о новой игре «Быки и коровы» и теперь они играют в эту игру сутками. Суть игры очень проста: Петя загадывает четырехзначное число, состоящее из различных цифр. Вася отгадывает задуманное Петей число, перебирая возможные варианты. Каждый раз Вася предлагает вариант своего числа, а Петя делает Васе подсказку: сообщает количество быков и коров, после чего Вася с учетом подсказки продолжает отгадывание числа до тех пор, пока не отгадает. Быки – это количество цифр в предложенном Васей числе, совпадающих по значению и стоящих в правильной позиции в задуманном Петей числе. Коровы – количество цифр, совпадающих по значению, но находящихся в неверной позиции. Например, если Петя задумал число 5671, а Вася предложил вариант 7251, то число быков равно 1 (только цифра 1 на своем месте), а число коров равно 2 (только цифры 7 и 5 не на своих местах). Петя силен в математике, но даже он может ошибаться. Помогите Пете написать программу, которая бы по загаданному Петей и предложенному Васей числам сообщала количество быков и коров.

Код

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    string n,m;
    int k1 = 0, k2 = 0;
    cin >> n >> m;
    for(int i = 0; i < n.size(); ++i)
        if(n[i] == m[i]){
            ++k1;
            n.erase(i,1);
            m.erase(i,1);
            --i;
        }
    sort(n.begin(),n.end());
    sort(m.begin(),m.end());
    for(int i = 0; i < n.size(); ++i)
        for(int j = 0; j < m.size(); ++j)
            if(n[i] == m[j])
                ++k2;
    cout << k1 << " " << k2;
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться