RQNOJ 154 吉祥数
来源:互联网 发布:店侦探软件多少钱 编辑:程序博客网 时间:2024/06/02 19:51
题目描述
为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。(假定班级人数不超过200人)
输入格式
输入有两行,第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。
输出:剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。
输出格式
输出是1行,为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。
样例输入
124 123 2 12 20 14 4 6 36 72
样例输出
2 6 12 24 72 123裸裸地模拟啊
要注意细节问题
交了3遍才过!!!
首先 要注意数可能是有重复的
其次 还要标记是哪一轮删除的
避免同一轮中 前面的数将后面的数删除 导致不计算后面的数的情况
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int s[222];int num[288],chosen[288];int casenum,m;int a,b,c;int pow(int s,int i){ int ans=1; while(i){i--;ans*=s;} return ans;}int calc(int s,int i){ int ans=0; while(s) { ans+=pow(s%10,i); s/=10; } return ans;}int main(){ scanf("%d",&casenum); m++;while(scanf("%d",&s[m])==1) { num[s[m]]++; m++; } m--; for(a=1;a<=255;a++)if(chosen[a])cout<<a<<" "; for(a=1;a<=casenum;a++) for(b=0;b<=255;b++) if(num[b]&&(!chosen[b]||chosen[b]==a)) { int t=calc(b,a+1); if(t<=255)chosen[t]=a; } for(a=1;a<=255;a++)if(!chosen[a]&&num[a]) { while(num[a]) { cout<<a<<" "; num[a]--; } } return 0;}
- RQNOJ 154 吉祥数
- 【其他】【RQNOJ】吉祥数
- 【模拟】rqnoj P154 吉祥数
- 吉祥数
- 【t090】吉祥数
- 【图论】【RQNOJ】产生数
- 【模拟】【RQNOJ】回文数
- rqnoj-36-数石子
- RQNOJ-36 数石子
- RQNOJ PID36 数石子
- 【搜索】【RQNOJ】数的计算
- 【贪心】【RQNOJ】删数问题
- 【模拟】【RQNOJ】验证数独
- 【数论 / 数值】【RQNOJ】波浪数
- [Rqnoj-148][NOIP1999]回文数
- 【动态规划】【RQNOJ】方格取数
- RQNOJ 698(矩形计数-圆内接矩形数)
- 吉祥三宝
- 转义字符
- POJ 2823 UESTCoj 1221 Sliding Window 单调队列 经典入门题
- 从十亿数据中找出出现最多的数以及出现次数
- 论如何挽回handle返回值的节操
- 常用License的区别
- RQNOJ 154 吉祥数
- C++进阶——类型转换符(参考百度文库)
- jQuery Ajax请求-jQuery.get(url, [data], [callback], [type])
- HDU-1500 Chopsticks DP
- 关于文件搜索
- 安卓弹出ProgressDialog进度框之后触摸屏幕就消失了的解决方法
- 安卓系统源码编译系列(二)——安卓系统源码编译教程
- 最长上升子序列LIS
- 学习编程的一点感想