PAT A1120 Friend Numbers

PAT A1120 Friend Numbers

在这里插入图片描述

Sample Input:

8
123 899 51 998 27 33 36 12

Sample Output:

4
3 6 9 26
  • 思路 1:
  1. 求出每个输入数各位数的和,insert入set
  2. 遍历set输出
  • code 1:
#include <iostream>
#include <set>
using namespace std;
set<int> se;
int digSum(int x){
	int ans = 0;
	do{
		ans += x % 10;
		x /= 10;
	}while(x > 0);
	return ans;
}
int main(){
	int n, tmp, cnt = 0;
	scanf("%d", &n);
	for(int i = 0; i < n; ++i){
		scanf("%d", &tmp);
		se.insert(digSum(tmp));
	}
	printf("%d\n", se.size());
	for(auto it = se.begin(); it != se.end(); ++it){
		cout << *it;
		if(++cnt < se.size()) printf(" "); 
	} 
	return 0;
}
  • T2 code:
#include <bits/stdc++.h>
using namespace std;
map<int, bool> mp; 
int Sum(string s){
	int sum = 0;
	for(int i = 0; i < s.size(); ++i){
		sum += s[i] - '0';
	}
	return sum;
}
int main(){
	int n;
	scanf("%d", &n);
	for(int i = 0; i < n; ++i){
		string num;
		cin >> num;
		mp[Sum(num)] = true;
	}
	printf("%d\n", mp.size());
	for(auto it = mp.begin(); it != mp.end(); ++it){
		if(it == mp.begin()) printf("%d", it->first);
		else printf(" %d", it->first);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值