1. 程式人生 > >p1100 資料統計

p1100 資料統計

題目

描述 Description
你到一個部落中心小鎮當統計員,每個部落用不同進位制數來彙報他們的人數,你要計算出總數,並用10進位制數向上彙報。
輸入格式 Input Format
第一行:一個整數n( 0<n<100),表示共有n個部落。
下面有n行,每行兩個用1個空格隔開的整數:bi ci,表示每個部落用bi(2<=bi<=10 )進位制數,記錄的人數是ci (不超過5位數)。
輸出格式 Output Format
只一個整數sum。表示10進位制的總人數。
樣例輸入 Sample Input

3
3 20
5 10
8 11

樣例輸出 Sample Output

20
時間限制 Time Limitation
1s

程式碼

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

int or2De(int base, char a[])
{
	int length = strlen(a);/* 計算這個陣列的長度*/ 
	int i, b=1, sum=0;/*定義三個區域性變數,i為陣列下標,b=1,實際上可以看成進位制的0次方,
	每迴圈一次,進位制就平方一次,sum是整個陣列通過進位制相乘得到的十進位制整數,初始為0*/
for (i=length-1; i>=0;i--) { if (a[i]>='A') { sum = sum + (a[i]-'A'+10)*b; b = b*base; } else { sum = sum+(a[i]-'0')*b; b = b*base; } } return sum;/*函式返回最後的十進位制數,即sum的值*/ } int main() { int n;//定義一個進位制 int m;//定義一個整型變數,存放部落的個數 int sum; sum = 0; char a[500];//定義一個數組存放輸入的n進位制的部落人數
int r[100];//定義一個存放每個部落的十進位制數 cout <<"please input the number of tribes" <<endl; scanf("%d", &m); for (int i=0;i<=m-1;i++) { cout<<"please input the base and number of"<< " "<<i+1 <<"th"<<" "<<"tribe"<<endl; scanf("%d %s", &n, &a); r[i]= or2De(n,a); } for (int j=0;j<=m-1;j++) sum = sum + r[j]; printf ("%d",sum); return 0; }