P2141 珠心算测验(洛谷)

题目描述

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。

某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

最近老师出了一些测验题,请你帮忙求出答案。

(本题目为2014NOIP普及T1)

输入输出格式

输入格式:

共两行,第一行包含一个整数nn,表示测试题中给出的正整数个数。

第二行有nn个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。

输出格式:

一个整数,表示测验题答案。

输入输出样例

输入样例#1: 复制

4
1 2 3 4

输出样例#1: 复制

2

解析:

没理解题意卡了半天,这个水题~~~

一定要看清题意,一是:“恰好”,说明每个数据只能用一次,例如:输,5      1  8  3  6  9,输出1,虽然9=1+8=3+6,但是9只能用一次;二是:“不同的”,比如输入:4      1   2   2   4,输出0,虽然4=2+2,但是2和2是相同的,不符合题意;

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=1e7+10;
int a[M],b[M];
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	} 
	int k=0;
	for(int i=0;i<n;i++){
		for(int j=i+1;j<n;j++){
			if(a[i]!=a[j]){
				b[k]=a[i]+a[j];
				k++;
			}
		}
	}
	int s=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<k;j++){
			if(a[i]!=-1&&a[i]==b[j]){
				s++;
				a[i]=-1;
			}
		}
	}
	cout<<s<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41555192/article/details/82628705
今日推荐