题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心斜体样式算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
(本题目为2014NOIP普及T1)
输入格式 共两行,第一行包含一个整数nnn,表示测试题中给出的正整数个数。
第二行有nnn个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
输出格式 一个整数,表示测验题答案。
刚开始的时候直接就枚举+暴力,不加分析,导致拿了20%的得分率,后来经过多次测试,才知题目有隐藏条件
这道题最重要的就是去重,只要和相同都算是重复,如:1+5=6,2+4=6 和相同只能算是一种情况
以下是枚举加暴力解法 :
#include<iostream> using namespace std; int main() { int n,count=0,a,b,c; cin>>n; int arr[n],brr[n]; for(int i=0; i<n; i++){ cin>>arr[i]; brr[i]=1; //注意了,很多人不能的满分就是因为 //没有设置这个标量 } for(a=0;a<n-1;a++) for(b=a+1;b<n;b++) { for(c=0; c<n;c++ ) { if(c==a||c==b) continue; if(arr[a]+arr[b]==arr[c]&&brr[c]==1) { count++; brr[c]=0; //当有两个数的和是 arr[c] 后,把brr[c] 置0; //表示这个数的两个因子已经得出,从而达到去重的目的 break; } } } cout<<count; }