洛谷 P2141 珠心算测验
Posted Mu_Huai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P2141 珠心算测验相关的知识,希望对你有一定的参考价值。
题目来源于洛谷
https://www.luogu.com.cn/problem/P2141
题目描述
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
(本题目为2014NOIP普及T1)
输入格式
共两行,第一行包含一个整数nn,表示测试题中给出的正整数个数。
第二行有nn个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
输出格式
一个整数,表示测验题答案。
输入输出样例
输入 #1
4 1 2 3 4
输出 #1
2
AC代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n; 6 cin>>n; 7 int a[107]; 8 int flag[10007]; 9 int ifflag[10007]; 10 for(int h=0;h<10007;h++) 11 { 12 flag[h]=0; 13 ifflag[h]=0; 14 } 15 for(int h=0;h<n;h++) 16 { 17 cin>>a[h]; 18 flag[a[h]]=1; 19 } 20 sort(a,a+n); 21 for(int h=0;h<n;h++) 22 { 23 for(int i=h+1;i<n;i++) 24 { 25 int temp=a[h]+a[i]; 26 if(temp>a[n-1]) break; 27 if(flag[temp]) 28 ifflag[temp]=1; 29 } 30 } 31 int anser=0; 32 for(int h=0;h<10007;h++) 33 if(ifflag[h]) anser++; 34 cout<<anser<<endl; 35 return 0; 36 }
坑点
1. 最后结果是统计满足条件的 和 的个数,而不是满足条件的 式子 的个数
以上是关于洛谷 P2141 珠心算测验的主要内容,如果未能解决你的问题,请参考以下文章