> 文档中心 > C++ 取牌游戏

C++ 取牌游戏


📋 个人简介

🎉大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
💬支持我:点赞👍+收藏⭐️+留言📝
🌺格言:༺永做优质༒programmer༻

📣取牌游戏

【问题描述】
🍋小明正在使用一堆共 K 张纸牌与 N-1 个朋友玩取牌游戏。其中,N≤K≤100000,2≤N≤100N≤K≤100000,2≤N≤100,K 是 N 的倍数。纸牌中包含M=K/NM=K/N张“good”牌和K−MK−M 张“bad”牌。小明负责发牌,他当然想自己获得所有“good”牌。

🍋他的朋友怀疑他会欺骗,所以他们给出以下一些限制,以防小明耍诈:

🍊游戏开始时,将最上面的牌发给小明右手边的人。

🍊每发完一张牌,他必须将接下来的 P 张牌(1≤P≤101≤P≤10)一张一张地依次移到最后,放在牌堆的底部。

🍊以逆时针方向,连续给每位玩家发牌。

小明迫切想赢,请你帮助他算出所有“good”牌放置的位置,以便他得到所有“good”牌。牌从上往下依次标注为 #1,#2,#3,…

【输入格式】
🍋第 1 行,3 个用一个空格间隔的正整数 N、K 和 P。

【输出格式】
🍋M 行,从顶部按升序依次输出“good”牌的位置。

【输入样例】3 9 2【输出样例】378

💯CODE

#include//#include//#include//#includeusing namespace std;queue<int>q;int a[100005],tot=0;int  main(){int n,k,p;cin>>n>>k>>p;int m,i,j;m=k/n;for(i=1;i<=k;i++)  q.push(i);//push 进队int x,y;y=1;while(!q.empty() /*q.size()*/)//队不空   0是false   非0是true {    x=q.front() ;//取队首q.pop();//出队     y--;    if(y==0) y=n;    if(y==1) a[++tot]=x;//good    for(j=1;j<=p;j++){    x=q.front() ;//取队首q.pop();//出队q.push(x);//进队} }sort(a+1,a+tot+1);for(i=1;i<=tot;i++){   cout<<a[i]<<endl;}return 0;}

🔮朋友们,点赞是我更新的动力,明天再见,拜拜!!!