题解 CF1355A 【Sequence with Digits】
显然,当
而如果你是通过打暴力发现这个结论的,你同时也会发现
但是,要注意,这是有可能超时的。因为我们现在还不知道
只考虑
故而,累加的和最多为1000,那么累加的次数也就是
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define fo(i,x,y) for(register int i=x;i<=y;++i)
#define go(i,x,y) for(register int i=x;i>=y;--i)
using namespace std;
inline ll read(){
ll x=0,fh=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') fh=-1;
ch=getchar();
}
while(isdigit(ch)){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*fh;
}
inline int f(ll x){//f(x)=MinDigit(x)*MaxDigit(x)
int mn=100,mx=0;
while(x){
int k=x%10;
x/=10;
mn=min(mn,k);
mx=max(mx,k);
}
return mn*mx;
}
void work(){
ll a=read(),k=read();//注意long long
for(ll i=1;i<k;++i){
int w=f(a);
if(w==0){
break;
}
a+=f(a);
}
printf("%lld\n",a);
//puts("");
}
int main(){
int T=read();
while(T--){
work();
}
return 0;
}
点个赞再走吧qwq