p1100 数据统计

版权声明:https://blog.csdn.net/huashuimu2003 https://blog.csdn.net/huashuimu2003/article/details/84439379

题目

描述 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;
}

猜你喜欢

转载自blog.csdn.net/huashuimu2003/article/details/84439379