p1100 資料統計
阿新 • • 發佈:2018-12-02
題目
描述 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;
}