题目描述:
题目链接:https://www.luogu.com.cn/problem/P2141
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
(本题目为2014NOIP普及T1)
输入格式
共两行,第一行包含一个整数n,表示测试题中给出的正整数个数。
第二行有n个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
输出格式
一个整数,表示测验题答案。
输入输出样例
输入
4
1 2 3 4
输出
2
代码实例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int a[] = new int[n];
for (int i = 0; i < a.length; i++) {
a[i] = scanner.nextInt();
}
boolean falg = false;
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
if(a[i]==a[j]) {
falg = true;
}
}
}
//判断输入的数字是否都各不相同
if(falg) {
System.out.println("请输入不同的数字");
}
int c[] = new int[n];
//将输入的a数组赋值给c数组,备用
for (int i = 0; i < a.length; i++) {
c[i] = a[i];
}
//计数器
int count = 0;
for (int b = 0; b < a.length; b++) {//循环4次,遍历1 2 3 4 这几个数
for (int i = 0; i < a.length; i++) {
for (int j =i+1 ; j < a.length; j++) {
if(a[i]+a[j]==a[b]) {
c[b] = 0;
}
}
}
}
//只要是有两个数加起来等于这个集合中的任意一个数,这个数的值就变成了0,这样的话就不会出现重复的情况
//重复的情况是:加入1+9=10,5+5=10那10就计算了两次,所以我们用以下的方法
for (int i = 0; i < c.length; i++) {
if(c[i] == 0) {
count++;
}
}
System.out.println(count);
scanner.close();
}
}