题目内容
给定一个正整数n,分别求出其所包含的所有奇数数字数位重构(使用n所包含的所有奇数数字重新组合)和偶数数字数位重构(使用n所包含的所有偶数数字重新组合)后能得到的最大值,没有则为0。
输入格式
输入一行,包含一个正整数n。
输入样例
7245032
输出格式
输出一行,包含2个以空格分隔的整数,分别表示n所包含的奇数数字数位重构最大值,偶数数字数位重构最大值,没有则为0。
输出样例
753 4220
限制条件
0 <= n <= 100000000
题目内容
给定一个正整数n,分别求出其所包含的所有奇数数字数位重构(使用n所包含的所有奇数数字重新组合)和偶数数字数位重构(使用n所包含的所有偶数数字重新组合)后能得到的最大值,没有则为0。
输入格式
输入一行,包含一个正整数n。
输入样例
7245032
输出格式
输出一行,包含2个以空格分隔的整数,分别表示n所包含的奇数数字数位重构最大值,偶数数字数位重构最大值,没有则为0。
输出样例
753 4220
限制条件
0 <= n <= 100000000
分别定义奇数和偶数数组,分解整数各个位,然后从大到小排序后,得到两个整数
#include <stdio.h>
int main()
{
int js[10],os[10],jn=0,on=0,i,j,t,oc=0,jc=0,n;
scanf("%d",&n);
while(n>0)
{
if((n%10)%2==0)
os[on++] = n%10;
else
js[jn++] = n%10;
n = n/10;
}
for(i=0;i<jn-1;i++)
for(j=0;j<jn-i-1;j++)
{
if(js[j] < js[j+1])
{
t = js[j];
js[j] = js[j+1];
js[j+1] = t;
}
}
for(i=0;i<on-1;i++)
for(j=0;j<on-i-1;j++)
{
if(os[j] < os[j+1])
{
t = os[j];
os[j] = os[j+1];
os[j+1] = t;
}
}
for(i=0;i<jn;i++)
jc = jc*10+js[i];
for(i=0;i<on;i++)
oc = oc*10+os[i];
printf("%d %d",jc,oc);
return 0;
}