PAT乙级1064

2017-01-14 19:44:21来源:CSDN作者:qq_22194315人点击

1064. 朋友数(20)

时间限制400 ms
内存限制65536 kB
代码长度限制8000 B
判题程序Standard作者CHEN, Yue

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不同的朋友证号。注意:我们默认一个整数自己是自己的朋友。

输入格式:

输入第一行给出正整数N。随后一行给出N个正整数,数字间以空格分隔。题目保证所有数字小于104

输出格式:

首先第一行输出给定数字中不同的朋友证号的个数;随后一行按递增顺序输出这些朋友证号,数字间隔一个空格,且行末不得有多余空格。

输入样例:
8123 899 51 998 27 33 36 12
输出样例:
43 6 9 26

#include<iostream>#include<vector>#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;int friendsum(int n){	int sum = 0;	do	{		sum += n % 10;		n /= 10;	} while (n);	return sum;}int main(){	int N;	cin >> N;	int a[37] = { 0 };	int temp;	while (N--)	{		cin >> temp;		a[friendsum(temp)]++;	}	vector<int> v;	for (int i = 0; i < 37; i++)	{		if (a[i])		{			v.push_back(i);		}	}	cout << v.size() << endl;	sort(v.begin(), v.end());	for (int i = 0; i < v.size(); i++)	{		cout << v[i];		if (i != v.size() - 1)			cout << " ";	}	return 0;}

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台