如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。
输入格式:
输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104。
输出格式:
首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。
输入样例:
8 123 899 51 998 27 33 36 12
输出样例:
4 3 6 9 26
code:
1 #include <stdio.h> 2 3 int main() 4 { 5 int n,i,m,sum = 0,count = 0; 6 int a[10000] = {0}; 7 scanf("%d",&n); 8 for(i = 0;i < n;i++) 9 { 10 sum = 0; 11 scanf("%d",&m); //123 12 while(m != 0) 13 { 14 sum += m%10; 15 m /= 10; 16 } 17 if(a[sum] == 0) 18 count++; 19 a[sum]++; 20 21 } 22 printf("%d\n",count); 23 int flag = 0; 24 for(i = 0;i < 10000;i++) 25 { 26 if(a[i] != 0) 27 { 28 if(flag != 0) 29 printf(" "); 30 printf("%d",i); 31 flag = 1; 32 } 33 } 34 }