2149.令人討厭的手機號(再續)

王凱撒發表於2020-12-10

題目描述

隨著時代的發展,手機成為了大家的主要通訊工具。小程知道只要得到對方的手機號碼,那麼就可以與對方通訊,因此他感覺手機號碼是一串非常神奇的數字。他決定對它進行研究。
小程是一位非常認真的學生,但他在研究問題的時候喜歡鑽牛角尖,於是這次他對手機號碼開始了瘋狂地試探。
大家都知道手機號碼是由11位數字組成的,當然聰明的小程也是知道的,他更知道這些數字一定是從0、1、2、3、4、5、6、7、8、9中選取的。但是聰明的他這次想到了一個難題:對於給定的手機號碼,它是由幾種數字組成的?它們的遞減序列是什麼?你能幫他解決麼?

輸入

輸入一個n,表示要給定n個手機號碼(1<=n<=20);
接下來n行,每行給定一個手機號碼(一定為11位)。

輸出

n組輸出,每組兩行;
第一行,輸出手機號碼由幾種數字組成;
第二行,輸出這些數字的遞減序列(整個序列在{}中,兩數之間用逗號隔開)。

樣例輸入

1
18013820100

樣例輸出

5
{8,3,2,1,0}

程式碼內容

#include<stdio.h>
#include<string.h>

int main()
{
	long long int i,j,a[10],m=0,t,b[10],r,flag;
	char c[12];//至少比規定的個數大1,最後一個陣列放'\0' *****
	scanf("%lld",&t);
	getchar();
	while(t--)
	{
		m=0;
		r=0;
		for(i=0;i<10;i++)
		{
			a[i]=0;
		}
		gets(c);
	    for(i=0;i<11;i++)
	    {
	    	int p=c[i]-'0';
		    if(a[p]==0)
		    {
		    	a[p]=1;
		    	m++;   //有幾種數 
			}	
	    }
	    printf("%lld\n",m); 
	    for(i=0;i<10;i++)
	    {
	    	if(a[i]!=0)
	    	{
	    		b[r++]=i;
			}
		}                   //共r種 
		printf("{");
		for(i=r-1;i>0;i--)
		{
			printf("%lld,",b[i]);
		}
		printf("%lld",b[0]);
		printf("}\n");
	}
    return 0;
}

相關文章