首页 > 其他分享 >浙江理工大学入队200题——17E

浙江理工大学入队200题——17E

时间:2022-10-30 11:58:49浏览次数:42  
标签:同学 200 卡片 输出 int 17E 入队 编号 淘汰

问题 E: 零基础学C/C++184——吉祥数

题目描述

为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2019年吉祥数。(假定班级人数不超过200人)

输入

输入有两行,第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。
输出:剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

输出

输出是1行,为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。

样例输入 Copy

1
24 123 2 12 20 14 4 6 36 72

样例输出 Copy

2 6 12 24 72 123

题解

可以发现第i轮次,是每个数字的i+1次方
我们可以自定义一个power:第i轮对于一个数字上每一位i+1次方的和的函数
我们需要哪些数据呢?
1.像24 123这种的值id
2.判断是否出界
3.存放power的数值,用来下一次计算
这时候就要联系一下我们的结构体,将他们三个绑定在一个struct内部

代码(AC)

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int mypow(int n, int lun)
{
	int sum = 0;
	while (n!=0)
	{
		int t = n % 10;
		sum += pow(t, lun);
		n /= 10;
	}
	return sum;
}
struct ac
{
	int id;//编号
	int pd;//判断是否淘汰  0淘汰
	int hou;//编号计算之后存放
}a[1000];
int main()
{
	int n;
	while (scanf("%d",&n)!=EOF)//轮数
	{
		int t = 0;
		while (cin >> a[t].id)//输入编号
			a[t++].pd = 1;//判断先置1  表示不出局
		for (int i = 1;i <= n;i++)//进行几轮操作
		{
			for (int j = 0;j < t;j++)
			{
				if (a[j].pd!=0)//判断是否出局
					a[j].hou = mypow(a[j].id, i + 1);//平方运算
			}	
			for (int j = 0;j < t;j++)
			{
				for (int q=0;q < t;q++)
				{
						if (a[j].id == a[q].hou && a[j].pd!=0)
						a[j].pd = 0;//出局
				}
			}
		}
		int b[1000], q = 0;
		for (int i = 0;i < t;i++)
		{
			if (a[i].pd) b[q++] = a[i].id;
		}
		sort(b, b + q);//从小到大排序
		for (int i = 0;i < q;i++)
		{
				cout << b[i] << " ";
		}
		cout << endl;
	}
}

标签:同学,200,卡片,输出,int,17E,入队,编号,淘汰
From: https://www.cnblogs.com/codeshany/p/zstu_200_17E.html

相关文章

  • 浙江理工大学入队200题——17H
    问题H:零基础学C/C++187——美丽的黄山题目描述众所周知,黄山市一片山(而不是一座山)。假设这些山排成了一排,每座山有各自的高度。现在游客们从最左边看山,有些山因为高度......
  • 浙江理工大学入队200题——16I
    问题I:零基础学C/C++172——猴子选大王题目描述有n只猴子围成一圈,从1~n编号,大家决定从中选出一个大王。经过协商,决定选大王的规则为:从编号为1的猴子开始报数,报到k的猴......
  • 浙江理工大学入队200题——17C
    问题C:零基础学C/C++182——墨汁题目描述小T擅长国画,特别崇拜以画马著称的国画大师徐悲鸿先生,所以小T也很喜欢画马,众所周知画马是需要很多墨汁的,为了节省支出,小T决定参......
  • 浙江理工大学入队200题——16H
    问题H:零基础学C/C++179——注册账号题目描述在某网站收集了n个人的注册账号,账号类型有身份证号或者QQ号两种。请编程用适当的数据结构保存信息,并统计身份证中男性和女......
  • 浙江理工大学入队200题——16G
    问题G:零基础学C/C++178——成绩统计题目描述兴趣小组收集学员成绩信息,每个学员的成绩有两种表示方法,一种用best、good、poor三种等级来表示,还有一种就是直接用分数来......
  • 浙江理工大学入队200题——16E
    问题E:零基础学C/C++175——身高问题题目描述输入n个学生的信息,每个学生信息包括姓名、身高、学号。请编程输出身高最高的学生的信息。输入第1行一个正整数n,表示学......
  • 浙江理工大学入队200题——16C
    问题C:零基础学C/C++173——桌面窗体重叠题目描述一个windows桌面上的窗体用4个整数定义位置:左边坐标、右边坐标、下边坐标、上边坐标现在,请输入2个窗体的位置信息,判......
  • 浙江理工大学入队200题——16D
    问题D:零基础学C/C++174——作业统计题目描述为了了解学生的课后作业负担情况,需要统计学生连续若干天完成作业所需的总时间。现在,输入某位学生n天完成作业的时间,格式为......
  • 浙江理工大学入队200题——16B
    问题B:零基础学C/C++171——年龄排序题目描述输入n个学生的信息,包括姓名、性别、出生年月。要求按年龄从小到大依次输出这些学生的信息。数据保证没有学生同年同月出生......
  • 浙江理工大学入队200题——15E
    问题E:零基础学C/C++165——输出素数题目描述编写一个判断素数的函数,主函数中利用这个函数,打印出n与m之间的所有素数。输入多组测试数据,每组输入2个整数n和m,其中1<......