PAT乙级 1056 组合数的和 (15分) & 1061 判断题 (15分)

1056 组合数的和 (15分)

给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。

输入格式:

输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。

输出格式:

输出所有可能组合出来的2位数字的和。

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int n=0,sum=0;
	vector<int> v;
	cin >> n;
	for (int i = 0; i < n; i++)//输入
	{
		int temp;
		cin >> temp;
		v.push_back(temp);
	}

	for(int i=0;i<v.size()-1;i++)//相加
		for (int j = i + 1; j < v.size(); j++)
		{
			sum += v[i] * 10 + v[j];
			sum += v[j] * 10 + v[i];
		}
	cout << sum;
	return 0;
}

1061 判断题 (15分)

判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。

输入格式:

输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。

输出格式:

按照输入的顺序输出每个学生的得分,每个分数占一行。

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int n = 0, m = 0;
	cin >> n >> m;
	vector<int> vgrade;//分值
	vector<int> vans;//答案
	vector<int> v;//结果
	for (int i = 0; i < m; i++)
	{
		int grade;
		cin >> grade;
		vgrade.push_back(grade);
	}
	for (int i = 0; i < m; i++)
	{
		int ans;
		cin >> ans;
		vans.push_back(ans);
	}
	for (int i = 0; i < n; i++)
	{
		int sum=0;//保存分数,并且起到重置的作用
		for (int i1 = 0; i1 < m; i1++)
		{
			int temp = 0;
			cin >> temp;
			if (vans[i1] == temp)
				sum += vgrade[i1];
		}
		v.push_back(sum);
		//cout << sum << "\n";
	}//最后输出所有数据
	for (int i = 0; i < n; i++)
	{
		cout << v[i] << "\n";
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38386991/article/details/104538590
今日推荐