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;
}