1064 朋友數 (20分)
如果兩個整數各位數字的和是一樣的,則被稱為是「朋友數」,而那個公共的和就是它們的「朋友證號」。例如 123 和 51 就是朋友數,因為 1+2+3 = 5+1 = 6,而 6 就是它們的朋友證號。給定一些整數,要求你統計一下它們中有多少個不同的朋友證號。
輸入格式:
輸入第一行給出正整數 n。隨後一行給出 n 個正整數,數字間以空格分隔。題目保證所有數字小於 10
^4。
輸出格式:
首先第一行輸出給定數字中不同的朋友證號的個數;隨後一行按遞增順序輸出這些朋友證號,數字間隔乙個空格,且行末不得有多餘空格。
輸入樣例:
8
123899
51998
2733
3612
輸出樣例:
436
926
源程式:
#include
int a[37]
=;intmain()
if(a[sum]==0
)}printf
("%d\n"
,n);
for(i=
0;i<
37;i++)if
(a[i]
)for
(i=i+
1;i<
37;i++)if
(a[i]
)printf
(" %d"
,i);
return0;
}
感悟總結:
分析問題很重要!要善於抓住問題關鍵點,這樣才能事半功倍。例如本題中,輸入資料不超過10^4,即最大為9999,所以朋友證號最大為36,最小為1。用陣列a的索引i表示朋友證號,a[i]=1表示存在此朋友證號,最後只需輸出a[i]==1的i值即可,且演算法時間和空間複雜度都較低。
PAT 乙級 1064 朋友數
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 如果兩個整數各位數字的和是一樣的,則被稱為是 朋友數 而那個公共的和就是它們的 朋友證號 例如123和51就是朋友數,因為1 2 3 5 1 6,而6就是它們的朋友證號。...
PAT 乙級 1064 朋友數
題目 輸入樣例 8 123899 51998 2733 3612 輸出樣例 436 926原題鏈結 思路 因為數最大只有4位,4位的和最大為36,所以建乙個長度大於36的陣列用來存各個朋友證號的個數,輸入完後,把陣列中對應個數不為0的陣列下標按要求輸出即可。注意 值得注意的是,這題的題目有點兒坑,我...
PAT乙級 1064 朋友數
問題描述 如果兩個整數各位數字的和是一樣的,則被稱為是 朋友數 而那個公共的和就是它們的 朋友證號 例如 123 和 51 就是朋友數,因為 1 2 3 5 1 6,而 6 就是它們的朋友證號。給定一些整數,要求你統計一下它們中有多少個不同的朋友證號。輸入格式 輸入第一行給出正整數 n。隨後一行給出...