这道题一遍过,也是非常nice啊
#include<bits/stdc++.h>
using namespace std;
int main()
{
//tempNum 679 378 168······
//tempTempNum 679 67 6 378 37 3······
int a,b,m=0,tempM=0,tempNum,tempTempNum;
cin>>a>>b;
vector<int> num;
for(int i=a;i<=b;i++)
{
//假设循环到i=679
tempNum=i;//此时tempNum=679
tempM=0;
while(1)//【这个循环负责将679更迭为378,168···,6】
{
tempTempNum=tempNum;//此时tempTempNum=679
if(tempNum<10)
{
break;
}
tempNum=1;
while(1)//【这个循环负责将TempNum的每个位相乘】
{
tempNum=tempNum*(tempTempNum%10);
//此时tempNum更新为9,在这个while下,将继续更迭为63(7*9),最终得到378(6*7*9)
if(tempTempNum<10)
{
break;
}
tempTempNum=tempTempNum/10;
//此时tempTempNum将被从679更新为67,伺候将继续更迭为6
}
tempM++;
//完成了由679到378,m的暂时值+1
}
if(tempM>m)
{
m=tempM;
num.clear();
num.push_back(i);
}
else if(tempM==m)
{
num.push_back(i);
}
}
cout<<m<<endl;
for(vector<int>::iterator it=num.begin();it!=num.end();it++)
{
if(it==num.begin())
{
cout<<*it;
}
else{
cout<<" "<<*it;
}
}
}