C++,Lutece 1513 简单的数学题

/*
Migrated from Lutece 1513 简单的数学题
Description
这是一道简单的数学题,简单到题目只给你一个正整数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等。
Input
一个正整数N(1<N<10 1000),保证N的每一位都不是0。
注意:因为N实在太大请使用至少1001位的char数组保存而非int保存N

Output
一个正整数M,如题目要求的那样。
*/


/*
(x+y) % m = (x % m + y % m) % m
x*10 % 9 = (x % 9 * 10 % 9) % 9 = x % 9, 10 % 9 = 1
423 % 9 = 400 % 9 + 10 % 9 + 3 % 9 = 4 % 9 + 2 % 9 + 3 % 9 = 7 % 9
(a - b) % 9 = (a % 9 - b % 9) % 9
423 % 9 = 234 % 9 = 342 % 9 = 324 % 9 = 243 % 9 = 432 % 9
(423 - 234)%9 = 0 % 9
*/
#include <iostream>
#include <string>
#include <algorithm>
int main(){
    std::string numString;std::cin>>numString;
    // x <--> y
    // -y+x , -x*10^i+y*10^i
    // ((y-x)*10^i + x-y) % 9 = (y-x+x-y)%9 = 0;
    std::sort(numString.begin(),numString.end());
    std::cout<<numString<<std::endl;
}
posted @ 2025-03-19 21:46  Kazuma_124  阅读(23)  评论(0)    收藏  举报