1056 組合數的和 (15 分)
給定 N 個非 0 的個位數字,用其中任意 2 個數字均可以組合成 1 個 2 位的數字。要求全部可能組合出來的 2 位數字的和。例如給定 二、五、8,則能夠組合出:2五、2八、5二、5八、8二、85,它們的和爲330。ios
輸入格式:
輸入在第一行中給出 N(1 < N < 10),隨後一行給出 N 個不一樣的非 0 個位數字。數字間以空格分隔。數組
輸出格式:
輸出全部可能組合出來的2位數字的和。函數
輸入樣例:
3 2 8 5
輸出樣例:
思路:
法一:爲了方便進行數字的組合,我選擇使用字符數組來讀入各個數字,而後在兩層循環中組合數字,使用stoi()函數轉化爲
int型進行求和運算
法二:考慮到每個數字均可以作個位和十位,對於N個數字,每一個數字均可以作n-1次個位和n-1次十位,因此僅須要一次遍歷
便可。330
#include <iostream> #include <cmath> #include<algorithm> #include<map> using namespace std; int main() { int sum=0; int n; scanf("%d",&n); char a[n]; for(int i=0;i<n;i++) { scanf(" %c",&a[i]); } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(i==j) continue; char ch[2]; ch[0]=a[i]; ch[1]=a[j]; sum+=stoi(ch); ch[0]=a[j]; ch[1]=a[i]; sum+=stoi(ch); } } cout<<sum<<endl; return 0; }