1042 Shuffling Machine (20 point(s))

Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid “inside jobs” where employees collaborate with gamblers by performing inadequate shuffles, many casinos employ automatic shuffling machines. Your task is to simulate a shuffling machine.

The machine shuffles a deck of 54 cards according to a given random order and repeats for a given number of times. It is assumed that the initial status of a card deck is in the following order:

S1, S2, …, S13,
H1, H2, …, H13,
C1, C2, …, C13,
D1, D2, …, D13,
J1, J2

where “S” stands for “Spade”, “H” for “Heart”, “C” for “Club”, “D” for “Diamond”, and “J” for “Joker”. A given order is a permutation of distinct integers in [1, 54]. If the number at the i-th position is j, it means to move the card from position i to position j. For example, suppose we only have 5 cards: S3, H5, C1, D13 and J2. Given a shuffling order {4, 2, 5, 3, 1}, the result will be: J2, H5, D13, S3, C1. If we are to repeat the shuffling again, the result will be: C1, H5, S3, J2, D13.

Input Specification:

Each input file contains one test case. For each case, the first line contains a positive integer K (≤ 20) which is the number of repeat times. Then the next line contains the given order. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print the shuffling results in one line. All the cards are separated by a space, and there must be no extra space at the end of the line.

Sample Input:

2
36 52 37 38 3 39 40 53 54 41 11 12 13 42 43 44 2 4 23 24 25 26 27 6 7 8 48 49 50 51 9 10 14 15 16 5 17 18 19 1 20 21 22 28 29 30 31 32 33 34 35 45 46 47

Sample Output:

S7 C11 C10 C12 S1 H7 H8 H9 D8 D9 S11 S12 S13 D10 D11 D12 S3 S4 S6 S10 H1 H2 C13 D2 D3 D4 H6 H3 D13 J1 J2 C1 C2 C3 C4 D1 S5 H5 H11 H12 C6 C7 C8 C9 S2 S8 S9 H10 D5 D6 D7 H4 H13 C5

题目大意:

模拟洗牌,输入第一行 K 表示洗牌的次数,第二行表示洗牌顺序,洗牌顺序意思是,当前 1 号位上的牌放到第 36 号位置,当前 2 号位置上的牌放到第 52 号位置,依次类推,一次洗牌完成,再按照洗牌顺序完成下一轮洗牌

设计思路:
  • 洗牌过程中,利用一个中间数组储存上一次结果
  • 54 张牌每 13 张一组,在数组中存储数字,输出时利用除法和取余
编译器:C (gcc)
#include <stdio.h>int main(void)
{int k;int sh[54], result[54], temp[54];int i, j;scanf("%d", &k);for (i = 0; i < 54; i++) {scanf("%d", &sh[i]);sh[i]--;result[i] = i;}for (i = 0; i < k; i++) {for (j = 0; j < 54; j++) {temp[j] = result[j];}for (j = 0; j < 54; j++) {result[sh[j]] = temp[j];}}char *p = "SHCDJ";printf("%c%d", p[result[0] / 13], result[0] % 13 + 1);for (i = 1; i < 54; i++) {printf(" %c%d", p[result[i] / 13], result[i] % 13 + 1);}return 0;
}

1042 Shuffling Machine (20 point(s)) - C语言 PAT 甲级相关推荐

  1. 1042. Shuffling Machine (20)

    1042. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Shu ...

  2. 【题意分析】1042 Shuffling Machine (20 分)

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Shuffling is a procedure used to randomize a deck of playing card ...

  3. 1042. Shuffling Machine (20)-PAT甲级真题

    Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techn ...

  4. PAT:1042. Shuffling Machine (20) AC

    #include<stdio.h> #include<stdlib.h> const int N=54; int main() { char mp[5]={'S','H','C ...

  5. PAT甲级1042 Shuffling Machine:[C++题解]模拟、哈希表、洗牌机

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:序列置换. 这里用到函数memcpy()用于数组复制,用法memcpy(dest, src, sizeof dest); 把src数组 ...

  6. pat00-自测5. Shuffling Machine (20)

    00-自测5. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Sh ...

  7. Shuffling Machine (20)

    Shuffling Machine (20) 时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 Shuffling ...

  8. 7-5 Shuffling Machine (20分)

    Shuffling洗牌 is a procedure程序 used to randomize随机化 a deck of一副playing cards扑克牌. Because standard标准 sh ...

  9. 1042 Shuffling Machine(简单题,用副本记录每次洗牌结果)

    目录 题目 测试样例 输入样例 输出样例 提交结果截图 带详细注释的源代码 题目 题目链接: 1042 Shuffling Machinehttps://pintia.cn/problem-sets/ ...

最新文章

  1. All-in-One 模式安装 KubeSphere 异常问题记录
  2. 刀片服务器在现有数据中心的应用策略
  3. 趣链 BitXHub跨链平台 (10)跨链自治
  4. maven2中snapshot快照库和release发布库的应用
  5. 关于html:form/html:form特性
  6. HDU 5617 Jam's maze dp+滚动数组
  7. Swift - 添加纯净的Alamofire
  8. python bytes转换为string_Python3 中 bytes 和 string 之间的互相转换
  9. 数据结构-图及其遍历
  10. 桥梁计算机辅助设计直接建模法,基于CATIA的大型桥梁三维建模方法
  11. 搜索引擎登录工具_“搜索引擎营销”有多重要!你知道吗?
  12. bat调用ant_bat调用ant_Ant调用批处理文件编译VS2005程序
  13. linux kali局域网远程桌面,kali使用rdesktop连接Windows远程桌面
  14. Java驼峰原则_Java:标识符规则_驼峰原则
  15. hg8120c 维修使能工具_ONT 用户手册(中国移动) V300R016C10.doc
  16. hi3519模组测试
  17. 新宝盘面简述12.24
  18. Java 的大 Class 到底是什么?,java高级程序员面试笔试宝典蔡羽
  19. 锐龙R3 4300U怎么样 相当于什么水平
  20. 小米电视怎么看cctv?安装小鲸电视免广告教程值得看

热门文章

  1. Windows命令-解压缩文件-tar
  2. 使用ffmpeg 提取视频关键帧
  3. linux dns chroot,chroot环境下dns解析不好用
  4. Linux高性能服务器编程——书籍阅读笔记
  5. 屏幕录像制作gif动态图
  6. ant的下载与安装(一)
  7. Matter理论介绍-通用-1-03:桥接器-数据结构
  8. bootstrap的概念使用方法
  9. [转]Clion2019破解-Jetbrains系列产品2019.1.1最新激活方法[持续更新]
  10. LRUCache的C++实现