L1-103 整数的持续性
https://pintia.cn/problem-sets/994805046380707840/exam/problems/1781658570803388422?type=7&page=1
#include <bits/stdc++.h>
using namespace std;
int main(){
//int()用来将字符转化为ascii十进制码
int b = int('5');
cout<<b<<endl;
//int()用来向下取整,保留整数
b = int(7.6);
//stoi()用来将整数类型的字符串转化为对应十进制整数,删去前导零
b = stoi("0010");
cout<<b<<endl;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
bool cmp(const pair<int,int> &p1,const pair<int,int> &p2){
if(p1.first!=p2.first) return p1.first>p2.first;
else return p1.second<p2.second;
}
ll calcu(int num){
ll sum=1;
ll a = num;
ll count=0;
while(a>=10){
string b = to_string(a);
for(int i=0;i<b.size();i++){
sum*=(b[i]-'0');//数字类型的字符串转成整型
}
a = sum;
sum = 1;
count++;
}
return count;
}
int main(){
vector<pair<ll,ll>> pair1;
int l,r;
cin>>l>>r;
for(int i=l;i<=r;i++){
ll cal_count = calcu(i);
pair1.push_back({cal_count,i});
}
sort(pair1.begin(),pair1.end(),cmp);
ll number = pair1[0].first;
string str;
cout<<pair1[0].first<<endl;
//输出方法一:转成字符串后去掉尾巴的空格
// for(auto p:pair1){
// if(p.first==number){
// str+=(to_string(p.second)+' ');
// }
// }
// str.erase(str.end()-1);//返回值是迭代器
// cout<<str;
//法二:数据放到新的容器,计算出要输出的数据量大小,空格数量则为它减1
vector<int> ve;
for(auto p:pair1){
if(p.first==number){
ve.push_back(p.second);
}
}
for(int i=0;i<ve.size();i++){
// cout<<ve[i];
// if(i<ve.size()-1)cout<<' ';
//法三:输出最后一个数时不输出空格,其余都输出
if(i!=ve.size()-1)cout<<ve[i]<<' ';
else cout<<ve[i];
}
return 0;
}