自承式光缆 方法 nginx反向代理 codeigniter datagridview msbuild vue插件 vue中文 vue开发文档 jq触发点击事件 oracle自增长 svn更新本地代码 tomcat调优和jvm调优 cmd清空命令 python环境 python集合 python获取字典的值 javaobject java变量类型 java设置 java抽象方法 java中long linux系统教程 php案例 键盘宏软件 lol卡米尔 js发送http请求 ps镜头校正 小米9截屏 压枪软件 光头强换肤助手 视频字幕制作软件 黑客攻防技术宝典 fireworks 粉碎文件工具 dota2控制台 掘地鼠炖肉 img转iso amd2500 苹果商店怎么改成中文
当前位置: 首页 > 学习教程  > 编程语言

1064 朋友数 (20分)主要思路

2021/1/28 23:19:53 文章标签:

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 123 51 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不…

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

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

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

输入样例:
8
123 899 51 998 27 33 36 12
输出样例:
4
3 6 9 26
  1. 输出分析
    第一行输出朋友证号的个数,第二行依次输出朋友证
    根据题意,貌似至少两个数各位和相同才能称为朋友证数,但这里,只要出现了,就是朋友证;
    样例中3是12的各位和,但没有第二个数各位和是3了
  2. 主要思路
    将输入的数计算各位和,并利用初始为0的数组,将和作为下标,自增;所以当数组不为0,则代表朋友证,输出下标即可
  3. 完整代码
#include<iostream>
using namespace std;
int main(){
	int s[40]={0};	//记录朋友数,因为数字小于10^4,所以最大9999,各位和36 
	int n,i;
	cin>>n;
	int m;	//输入数字
	int sum=0;	//记录朋友数个数 
	for(i=0;i<n;i++){
		int t=0;	//各位和 
		cin>>m;
		while(m){
			t+=m%10;
			m/=10;
		}
		s[t]++;	 
	} 
	for(i=0;i<40;i++){
		if(s[i]>=1){
			sum++; 
		}
	}
	cout<<sum<<endl;
	for(i=0;i<40;i++){
		if(s[i]>=1){
			cout<<i;
			sum--;
			if(sum!=0)	//注意在if里,不然空格输出不对 
				cout<<" ";
		}
	}
	return 0;
}

本文链接: http://www.dtmao.cc/news_show_650158.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?