求大神用c++或c语言解答,本人速求,谢谢!

PB获得了两个正整数数列 {a_i} , {b_i} ,长度分别为 n , m ,其中每个数都小于 10。定义一个正整数是“美丽的正整数”,当且仅当:这个数的十进制表示中,至少有一个数位上的数在数列 a_i 出现过,至少有一个数位上的数在数列 b_i 出现过。现在PB希望求出最小的“美丽的正整数”。

输入
第一行,两个正整数 n , m ;
第二行,n 个正整数,第 i 个为 a_i ;
第三行,m 个正整数,第 i 个为 b_i 。

输出
一行,一个正整数表示最小的“美丽的正整数”。

样例输入
样例输入1
2 3
2 4
6 5 2

样例输入2
2 6
8 7
1 1 4 5 1 4

样例输出
样例输出1
2

样例输出2
17

那不就是取两个数列里最小的数,如果不同组成一个最小的两位数,如果相同输出这个一位数么。

思路: 将读取的分别存入两个数组,然后从小到大排序,在第一数组第一个数是否在第二数组存在,若存在就是这个数了。
若不存在,判断哪个大作为个位数,哪个小作为十位数:

c++代码:

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;
int main(){

    unsigned int n,m,res;
    scanf("%d %d",&n,&m);
    vector<int> ver_n,ver_m;
    ver_n.clear();
    ver_m.clear();
    for(unsigned int i=0;i<n;i++)
    {
        int temp;
        scanf("%d",&temp);
        ver_n.push_back(temp);
    }
    for(unsigned int j=0;j<m;j++)
    {
        int temp;
        scanf("%d",&temp);
        ver_m.push_back(temp);
    }
    sort(ver_n.begin(), ver_n.end());
    sort(ver_m.begin(), ver_m.end());
    vector<int>::iterator it=find(ver_m.begin(),ver_m.end(),ver_n.at(0));
    if (it!=ver_m.end())
    {
        res = ver_n.at(0);
    }
    else
    {
        res = ver_n.at(0) > ver_m.at(0)? (ver_m.at(0)*10+ver_n.at(0)):(ver_n.at(0)*10+ver_m.at(0));
    }
    printf("%d",res);


    return 0;
}