1204: 剔除相关数

来源:互联网 发布:nlp tensorflow 编辑:程序博客网 时间:2024/04/27 10:34

1204: 剔除相关数

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 163  Solved: 80

SubmitStatusWeb Board

Description

一个数与另一个数如果含有相同数字和个数的字符,则称两数相关。现有一堆乱七八糟的整数,里面可能充满了彼此相关的数,请你用一下手段,自动地将其剔除。

Input

多实例测试。每组数据包含一个n(n<1000),和n个int范围内的正整数。若n为0,表示结束。

Output

按从小到大的顺序输出非相关数,若没有非相关数,则输出None。

Sample Input

8213 667 3 213 43 34 677 23322 232 2320

Sample Output

2 3 667 677None

HINT

#include <iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>int zhuanhuan(int n);using namespace std;int main(){    int a[1001];    int n,i,j;    int f;    while(scanf("%d",&n),n!=0)    {        f=0;        int f1;        int f2;        for(i=0; i<n; i++)            scanf("%d",&a[i]);        for(i=0; i<n; i++)        {            f2=zhuanhuan(a[i]);            f1=0;            if(a[i]>=0)            {                for(j=i+1; j<n; j++)                {                    if(f2==zhuanhuan(a[j]))                    {                        f1=1;                        a[j]=-1;                    }                }                if(f1==1)                    a[i]=-1;            }        }        sort(a,a+n);        if(a[n-1]==-1)            printf("None\n");        else        {            for(i=0; i<n; i++)            {                if(a[i]>=0)                {                    if(f==0)                    {                        f=1;                        printf("%d",a[i]);                    }                    else                        printf(" %d",a[i]);                }            }            printf("\n");        }    }    return 0;}int zhuanhuan(int n){    int a[10]= {0};    int i;    while(n>=10)    {        a[n%10]++;        n=n/10;    }    a[n]++;    int s=0;    for(i=0; i<9; i++)    {        if(a[i]!=0)        {            while(a[i]--)            {                s*=10;                s+=i;            }        }    }    return s;}