去重排序

题目背景

一个简单的数学题。。。

题目描述

输入一个数N(N<=200位),拆分,得出最小的和最大的数列。

如: 123求出最小的=123

123求出最大的=321

再求出它们的差。

如: 321-123=?

若不是数字,直接输出NO

输入输出格式

输入格式:

第一行:输入一个数N(N<=200位)

输出格式:

输出看【题目描述】

输入输出样例

输入样例#1:

123

输出样例#1:

321-123=198

输入样例#2:

10

输出样例#2:

10-01=9

输入样例#3:

撒反对威锋网

输出样例#3:

NO

说明

对于%30的数据=<30位

对于%60的数据=<60位

对于%100的数据=<200位

思路:

  两遍排序,一遍减法,去掉前导0然后输出;

  有一个点是最大排列等于最小排列,这时要输出一个0;

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

int len,ans[300];

char ch[300],ch_1[300],ch_2[300];

bool cmp(char a,char b)
{
    return a>b;
}

int main()
{
    cin>>ch;
    len=strlen(ch);
    for(int i=0;i<len;i++)
    {
        if(ch[i]>‘9‘||ch[i]<‘0‘)
        {
            cout<<"NO"<<endl;
            return 0;
        }
        ch_1[i]=ch[i],ch_2[i]=ch[i];
    }
    sort(ch_1,ch_1+len,cmp);
    sort(ch_2,ch_2+len);
    cout<<ch_1<<‘-‘<<ch_2<<‘=‘;
    for(int i=0;i<len;i++)
    {
        ans[i]=ch_1[i]-ch_2[i];
    }
    for(int i=len-1;i>=0;i--)
    {
        if(ans[i]<0) ans[i-1]--,ans[i]+=10;
    }
    bool if_=true;
    for(int i=0;i<len;i++)
    {
        if(ans[i]==0) continue;
        if_=false;
        for(int j=i;j<len;j++) cout<<ans[j];
        break;
    }
    if(if_) cout<<‘0‘;
    return 0;
}
时间: 2024-12-26 18:29:03

去重排序的相关文章

数组去重排序

总时间限制:  1000ms  内存限制:  1000kB 描述 小吉是银行的会计师,在处理银行帐目的时候,遇到了一些问题.有一系列整数,其中含有重复的整数,需要去掉重复后,排序输出,你能帮助小吉解决问题吗? 输入 输入数据共2行,第一行输入测试数据个数n,第二行输入这n个整数,整数之间可能有重复,整数之间可能有若干个空格.n <= 105,所有的整数不超过104. 输出 输出为1行,是这n个数去重后从小到大的排序. 样例输入 3 4 4 2 样例输出 2 4 + ? #include <io

去重+排序板子(set+map)

题意: 给定n个数,去重排序后输出个数和每个数 1.map实现 #pragma GCC optimize("O2") #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<set> #i

华为机试 java 实现去重排序 用Treeset

结合一道华为的机试题来展示 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成"去重"与"排序"的工作. Input Param n               输入随机数的个数 inputArray      n个随机整数组成的数组

去重 排序

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成“去重”与“排序”的工作.     Input Param       n               输入随机数的个数       inputArray      n个随机整数组成的数组        Return

python实现去重排序

功能要求: 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性 他先用计算机生成了N个1-1000之间的随机整数(N<=1000),N是用户输入的,对于 其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,然后再把这些 数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成"去重"与排序工作 源代码如下: import random s = set([]) for i in range(int(raw_input('N:'))):

华为机试—字符串去重排序

输入一个字符串,去掉重复出现的字符,并把剩余的字符串排序输出. #include<iostream> #include<string> using namespace std; int main(int argc, char *argv[]) { string s; while(cin>>s) { for(int i=0;i<s.size();++i) for(int j=i+1;j<s.size();++j) { if(s[i]>s[j]) { ch

List&lt;Map&gt;去重排序

数据格式 [ { "id":"d3e8a9d6-e4c6-4dd8-a94f-07733d3c1b59", "parentId":"6d460008-38f7-479d-b6d1-058ebc17dae3", "myorder":1, "name":"任务一" }, { "id":"6d460008-38f7-479d-b6d1-058e

poj 1564 Sum It Up (DFS+ 去重+排序)

http://poj.org/problem?id=1564 该题运用DFS但是要注意去重,不能输出重复的答案 两种去重方式代码中有标出 第一种if(a[i]!=a[i-1])意思是如果这个数a[i]和上一个数相同,那么记录数组的同一个位置就没有必要再放入这个数.例如:4 3 3 2构成和是7,b数组的第二个位置放了3,则后面的那个3就没有必要再放入记录数组的第二个位置了.(可能会放到后面的位置)... #include<stdio.h> #include<string.h> #i

20:单词及字母去重排序案例

用shell处理以下内容 1.按单词出现频率降序排序! 2.按字母出现频率降序排序! the squid project provides a number ofresources to assist users design,implement and support squid installations.Please browse the documentation and support sections for more infomation,byoldboy training. 课堂