2020.12.14--Codeforces Round #104 (Div.2)补题

C - Lucky Conversion

 CodeForces - 146C 

Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

Petya has two strings a and b of the same length n. The strings consist only of lucky digits. Petya can perform operations of two types:

  • replace any one digit from string a by its opposite (i.e., replace 4 by 7 and 7 by 4);
  • swap any pair of digits in string a.

Petya is interested in the minimum number of operations that are needed to make string a equal to string b. Help him with the task.

Input

The first and the second line contains strings a and b, correspondingly. Strings a and b have equal lengths and contain only lucky digits. The strings are not empty, their length does not exceed 105.

Output

Print on the single line the single number — the minimum number of operations needed to convert string a into string b.

Examples

Input
47
74
Output
1
Input
774
744
Output
1
Input
777
444
Output
3

Note

In the first sample it is enough simply to swap the first and the second digit.

In the second sample we should replace the second digit with its opposite.

In the third number we should replace all three digits with their opposites.

题意:给出两个字符串a,b,对字符串a进行两种操作:1.将4替换为7或将7替换为4 (2. 交换字符串中的任意两个数,求出最少操作数使得字符串a与字符串b相等

题解:记录下a与b中对应位置不同的数的个数,即与b串中对应位置不同且a串为4的个数(用ct4表示)或a串中7的个数(ct7表示),如果不考虑交换操作,那么操作次数为ct4+ct7;

如果ct4与ct7均不为0,那么就可以进行交换操作,所以可以交换的次数应为min(ct4,ct7),那么最终的操作次数为ct4+ct7-min(ct4+ct7)

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a,b;
    int ct4=0,ct7=0;
    cin>>a>>b;
    int n;
    n=a.size();
    for(int i=0;i<n;i++)
    {
        if(a[i]==b[i])continue;
        if(a[i]=='4')ct4++;
        else ct7++;
    }
    cout<<(ct4+ct7-min(ct4,ct7))<<endl;
}

 B - Lucky Mask

Petya loves lucky numbers very much. Everybody knows that lucky numbers are positive integers whose decimal record contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are not.

Petya calls a mask of a positive integer n the number that is obtained after successive writing of all lucky digits of number n from the left to the right. For example, the mask of number 72174994 is number 7744, the mask of 7 is 7, the mask of 9999047 is 47. Obviously, mask of any number is always a lucky number.

Petya has two numbers — an arbitrary integer a and a lucky number b. Help him find the minimum number c (c > a) such that the mask of number c equals b.

Input

The only line contains two integers a and b (1 ≤ a, b ≤ 105). It is guaranteed that number b is lucky.

Output

In the only line print a single number — the number c that is sought by Petya.

Examples

Input
1 7
Output
7
Input
100 47
Output
147
题解:输入两个整数a,b,用数组x[]将a的各位数存储起来,因为要求的c比a大,所以从i=a+1开始遍历,将i的各位数存入数组y[]
中,遍历该数组,看是否存在数与a相同且无多余的幸运数
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,x[100],y[100];
    while(cin>>a>>b)
    {
        int n,m,k=0,p=0;
        m=b;
        while(m>0)
        {
            x[k++]=m%10;
            m/=10;
        }
        for(int i=a+1; ;i++)
        {
            n=i;
            p=0;
            while(n!=0)
            {
                y[p++]=n%10;
                n/=10;
            }
            int w,j,s=0;
            for(w=0,j=0;w<p;w++)
            {
                if(y[w]==4||y[w]==7)
                {
                    if(y[w]==x[j])
                    {
                        j++;
                    }
                    else//当数值为147777 47 ,i=147778,不符合要跳出,重新遍历
                    {
                        s=1;
                        break;
                    }
                }
            }
            if(s==1)
            {
                continue;
            }
            if(j==k)
            {
                cout<<i<<endl;
                break;
            }
        }
    }

}

 

posted @ 2020-12-20 18:17  西瓜0  阅读(116)  评论(0)    收藏  举报