@PaulGuan
2016-10-18T12:53:36.000000Z
字数 490
阅读 750
算法
题解
一个数字如果只含有4和7,我们将其称为幸运数字,如果将正常数字中含有的4和7依次提取,和给定的幸运数字相等,那么输出,现给定一个正常数字a和幸运数字b,求大于这个数字的最小的符合上面条件的数字。
考虑到本题的数据范围(1<=a,b<=10^5),我们直接从a开始一个个穷举即可,若要优化,则可进行判断,筛除不需要进行判断的数。
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int a;
string b;
cin>>a>>b;
int i,j;
for(i=a+1;;i++)
{
string c;
ostringstream oss;
oss<<i;
c=oss.str();
string d;
for(j=0;j<c.size();j++)
{
if(c[j]=='4'||c[j]=='7')
{
d.push_back(c[j]);
}
}
if(d==b)
break;
}
cout<<i<<endl;
return 0;
}