数字重新组合后相减是9的倍数

这是一道简单的数学题,简单到题目只给你一个正整数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 < 10^{1000})N(1<N<10
1000
),保证N的每一位都不是0。

注意:因为N实在太大请使用至少1001位的char数组保存而非int保存N

现在证明 数字重新排列后相减得到的数一定是9的倍数
比如 三位数ijk 可以写成 100i+10j+k
重新排列组合后就是 100j + 10k + i
俩式子相减 我们发现 是 99i - 90j - 9k 是9的倍数,其他情况同理可得!

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
const int N = 1010;
int b[N];
char str[N];

int main()
{
     scanf("%s",str);
     int m = strlen(str);
     for(int i = 0;str[i];i++)
     {
         int x= str[i]-'0';
         b[i] = x;
     }
     sort(b,b+m);
     for(int i = 0;i<m;i++)
     printf("%d",b[i]);
     cout<<endl;
    
     
     
    return 0;
}
posted @   希望上课能听懂  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示