这是一道简单的数学题,简单到题目只给你一个正整数N,而你则输出一个M,这个M是由N的各个位数重新排列而来的(比如,N=123,则M可以为123,213,321,312,132,231)。由于M有许多许多,所以要求你输出一个满足|N-M| % 9 =0 的最小M。
A % 9 = 0的含义为 A是9的倍数,比如9,18,0,9999等。
Standard Input
一个正整数N (1< N < 101000)保证N的每一位都不是0。
Standard Output
一个正整数M,如题目要求的那样。
Samples
Input
91
Output
19
其实一开始做的时候有点小懵逼,后来突然也不知道咋就发现了对于题述的数字,无论将N的数字顺序如何打乱,得到的新数字M必然满足|N-M| % 9 =0 ,所以求M的最小值,实际上就是将N的各位数字升序排列。
#include<iostream>
using namespace std;
#include<cstring>
int main()
{
string s;
getline(cin,s);
int L=s.length();
for(int i=1;i<L;i++)
{
for(int j=0;j<L-i;j++)
{
if(s[j]>s[j+1])
{
char c=s[j];
s[j]=s[j+1];
s[j+1]=c;
}
}
}
cout<<s;
return 0;
}
第一次发着玩,有大佬给证明过程吗😂