列表

详情


WY58. 数位重排

描述

牛牛有一个正整数x,牛牛需要把数字x中的数位进行重排得到一个新数(不同于x的数),牛牛想知道这个新数是否可能是原x的倍数。请你来帮他解决这个问题。

输入描述

输入包括t+1行,第一行包括一个整数t(1 ≤ t ≤ 10), 接下来t行,每行一个整数x(1 ≤ x ≤ 10^6)

输出描述

对于每个x,如果可能重排之后变为自己的倍数输出"Possible", 否则输出"Impossible".

示例1

输入:

2
14
1035

输出:

Impossible
Possible

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-07-09

#include <stdio.h>
#include <stdlib.h>

int issame(int a,int b)
{
	int i;
	int a1[10],b1[10];
	memset(a1,0,10*sizeof(int));
	memset(b1,0,10*sizeof(int));
	while(1)
	{
		a1[a%10]++;
		a/=10;
		if(a==0)
			break;
	}
	while(1)
	{
		b1[b%10]++;
		b/=10;
		if(b==0)
			break;
	}
	for(i=0;i<10;i++)
	{
		if(a1[i]!=b1[i])
			return 0;
	}
	return 1;
}

int main(void) {
	int t,i,j,tmp,flag;
//	t=1;
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		flag=0;
		scanf("%d",&tmp);
//		tmp=1035;
		for(j=2;j<10;j++)
		{
			if(issame(tmp,tmp*j)==1)
			{
				flag=1;
				break;
			}
		}
		if(flag==1)
			printf("Possible\n");
		else
			printf("Impossible\n");
	}
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2021-09-20

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int t;
    while(scanf("%d",&t)!=EOF)
    {
        int x;
        while(t--)
        {
            scanf("%d",&x);
            int arr[8];
            for(int i=2;i<=9;i++)
            {
                arr[i-2]=x*i;
            }
            bool flag=false;
            for(int i=0;i<8;i++)
            {
                int n=x;
                int brr[10]={0};
                while(n!=0)
                {
                    brr[n%10]++;
                    n/=10;
                }
                while(arr[i]!=0)
                {
                    if(brr[arr[i]%10]==0)
                        break;
                    brr[arr[i]%10]--;
                    arr[i]/=10;
                }
                if(!arr[i])
                {
                    flag=true;
                    break;
                }
            }
            if(flag)
                printf("Possible\n");
            else
                printf("Impossible\n");
        }
    }
    return 0;
}

上一题