原题链接
题意:
给你一个数a,对他执行k次操作,每次操作让当前数a加上组成a的每位数中最大值与最小值的积。输出最后得到的结果。
思路:
一步步模拟就行,只要中间出现了0这位数立马break掉,因为出现0之后改数字再怎么加也不会变了。
代码:#include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; const int N=2e5+10; ll cal(ll x) { ll temp=x,minx=inf,maxx=-1; while(temp!=0) { minx=min(minx,temp%10); maxx=max(maxx,temp%10); temp/=10; } return minx*maxx; } int main() { ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int t; cin>>t; while(t--) { ll a,k; cin>>a>>k; for(ll i=2;i<=k;i++) { ll c=cal(a); if(c==0) break; a+=c; } cout<<a<<endl; } return 0; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算