1064 朋友數——C/C++實現
阿新 • • 發佈:2018-12-11
題目
1064 朋友數 (20 point(s))
如果兩個整數各位數字的和是一樣的,則被稱為是“朋友數”,而那個公共的和就是它們的“朋友證號”。例如 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
演算法
程式碼
//PAT1064V1 //思路:先將輸入的數字求其各位數字之和,再進行比較 #include <stdio.h> int main(){ int n,i,tmp,a[100]={0},m=0,count=0; scanf("%d",&n); for(i=0;i<n;i++){ scanf("%d",&tmp); while(tmp){ //求其各位數字之和,再進行儲存 m+=tmp%10; tmp=tmp/10; } if(!a[m]){ a[m]=1; count++; // printf("%d ",m); } m=0; } printf("%d\n",count); //數出a[]中重複數字出現的次數,第一次出現就記錄下來,次數為1,多次出現則直接累加次數即可 for(i=0;i<100;i++){ if(a[i]) printf("%d%c",i,--count?' ':'\n'); } }