对于一个数 n ,记 m 为把 n 的各数位重排序得到的最大的数,求 m-n 对 10 取模的值(也就是 m−n 除以 10 的余数)。
举例来说,当 n = 213 时, 各数位重排序有 123、132、213、231、312、321 六种可能,其中最大的数字是 321 ,所以 m=321,输出的答案即为 (m-n) = 108 对 10 取模的结果,也就是 8;
input:
一行一个整数 (0<n<10^{10^6} ,也就是说 n 是位数不超过 10^6。
output:
一个整数。
因本题数据非常大,而且所求只与数位有关,可以使用string存储数据,贪心思考,最后一位相减加10,或者就是0.
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int N=1e7;
int a[N];
int main(){
string s;
cin>>s;
int x=s.size();
int y;
y=s[x-1]-'0';
int minn=0x3f3f3f3f;
for(int i=0;i<s.size();i++)
{
if(s[i]-'0'<minn) minn=s[i]-'0';
}
int p=minn-y;
if(p==0) cout<<0;
else cout<<p+10;
}