吉祥数

来源:互联网 发布:杂志排版软件 编辑:程序博客网 时间:2024/04/29 16:46

[问题描述]

为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给每位同学发一张卡片,每张卡片上都有一个编号(此编号为非负数,且小于255),每个编号互不相同。老师制定了以下的游戏规则:第一轮,每位同学将自己卡片上编号的各位数字进行平方后再相加得到一组新数,编号在这组新数中出现的同学淘汰出局,第二轮,余下的同学再将编号的各位数字进行立方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,第三轮,余下的同学再将编号的各位数字进行4次方相加得到一组新数,编号在这组新数中出现的同学再淘汰出局,……,以此类推,经过n轮后,仍留下来的同学,将获得圣诞特别礼物,卡片上的数即为2007年吉祥数。(假定班级人数不超过200人)
[输入文件]
输入文件ghillie .in 有两行,第1行为1个正整数n(n<8),表示有n轮游戏,第二行是卡片上互不相同的编号。
输出:剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。
[输出文件]
输出文件ghillie .out是1行,为剩下来的各个吉祥数,按从小到大顺序输出,每两个数之间有一个空格。
[输入样例]
1
24 123 2 12 20 14 4 6 36 72
[输出样例]
2 6 12 24 72 123

解题思路

这个数据规模不是很大,简简单单的模拟就可以AC,但是有一点比较坑人的就是:每次必须先计算完所有的人的数字,再进行踢人,否则的话前面计算出来就立刻把后面的人踢除了,这样后面的那个人的数字就没有被计算,那么就会留下几个 不应该被留下的小孩。
这告诫我们模拟就要老老实实模拟,不要ZB,@显摆

代码

var j,i,sum,n:integer;    a,b:array[1..200]of longint;function jie(n,k:integer):longint;var a,b,sum,ji,i:longint;begin  sum:=0;  while n>0 do   begin    a:=n mod 10;    n:=n div 10;    ji:=1;    for i:=1 to k+1 do ji:=ji*a;    sum:=sum+ji;   end;  exit(sum);end;procedure check(n:longint);var i:integer;begin  for i:=1 to sum do   if a[i]=n then begin a[i]:=0;exit;end;end;procedure qsort(b,e:integer);var l,r,t,m:longint;begin  l:=b;r:=e;m:=a[(l+r)>>1];  while l<r do   begin     while a[l]<m do inc(l);     while m<a[r] do dec(r);     if l<=r then       begin         t:=a[l];         a[l]:=a[r];         a[r]:=t;         inc(l);         dec(r);       end;   end;  if l<e then qsort(l,e);  if b<r then qsort(b,r);end;begin  readln(n);  sum:=0;  while not eoln do    begin      inc(sum);      read(a[sum]);    end;  for i:=1 to n do    begin      fillchar(b,sizeof(b),0);      for j:=1 to sum do        if a[j]<>0 then b[j]:=jie(a[j],i);      for j:=1 to sum do check(b[j]);    end;  qsort(1,sum);  for i:=1 to sum do if a[i]<>0 then write(a[i],' ');end.测试点1 Accepted / 0ms / 260kB测试点2 Accepted / 0ms / 260kB测试点3 Accepted / 0ms / 260kB测试点4 Accepted / 0ms / 260kB测试点5 Accepted / 0ms / 260kB测试点6 Accepted / 0ms / 260kB测试点7 Accepted / 0ms / 260kB测试点8 Accepted / 0ms / 260kB测试点9 Accepted / 0ms / 260kB测试点10 Accepted / 0ms / 260kB
0 0
原创粉丝点击