栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

和数(一个数等于另外两个数之和)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

和数(一个数等于另外两个数之和)

蒜头君给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。比如,对于数列 1 2 3 4,这个问题的答案就是 2,因为 3 = 2 + 1, 4 = 1 + 3。

输入格式

共两行,第一行是数列中数的个数 n(1≤n≤100),第二行是由 n 个不大于 10000 的正整数组成的数列,相邻两个整数之间用单个空格隔开。

输出格式

一个整数,即数列中等于其他两个数之和的数的个数。

Sample Input
4
1 2 3 4
Sample Output
2
思路
此题中,一个数等于另外两个数之和,这个数只能算一次(多组数相加都能得到这个数,只算一次)例如:
{
5
1 2 2 3 4
2
注:

编号 0,1,;编号 0,2;相加1+2=3;只算一次;
编号1,2;相加 2+2=4;第二次;
}

#include
#include
#include
using namespace std;
int n,s[111],x,book[11111];
int main() {
	scanf("%d",&n);
	memset(s,0,sizeof(s));
	memset(book,0,sizeof(book));
	for(int i=1; i<=n; i++) {
		scanf("%d",&s[i]);
	}
	sort(s+1,s+1+n);
	int sum=0;
	for(int i=1;i<=n;i++)
	{
		int flag=0;
		for(int j=1;j<=n;j++){
			for(int k=1;k<=n;k++){
				if(s[i]==s[j]+s[k]&&j!=i&&j!=k&&i!=k){
					flag=1;
					sum++;
					break;
				}
			}
			if(flag==1) break;
		}
	}
	printf("%dn",sum);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号