河南第六届ACM省赛(Card Trick)

编程入门 行业动态 更新时间:2024-10-05 03:21:21

<a href=https://www.elefans.com/category/jswz/34/1766720.html style=河南第六届ACM省赛(Card Trick)"/>

河南第六届ACM省赛(Card Trick)

题目地址:.php?pid=714

题意:把n张牌倒过来数1张最上面的牌放到最下面,再把最上面的一张牌正着放到桌子上,是1,接着依次数2张最上面的牌放到最下面,再把最上面的一张牌正着放到桌子上,是2,依次类推

思路:记得教小学生的时候拿着个游戏和他们装了多少次逼,没想到省赛的题遇到了,实在是练习,要不然直接在圈里填数字就把所有情况画出来了,数据还特别蛋疼,还小于13,不知道有多少参赛选手是画圈出结果的

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>const int inf = 0x7f7f7f7f;//2139062143
typedef long long ll;
using namespace std;int a[15];int main()
{int t;int i,j;scanf("%d",&t);while(t--){int n;memset(a,0,sizeof(a));scanf("%d",&n);j = 1;for(i=1; i<=n-1; i++){int sum = 0;while(true){if(a[j] == 0){sum++;}j++;if(j == n+1){j = 1;}if(sum == i){while(true)//找下一个没有放的位置放进去{if(!a[j]){a[j] = i;break;}j++;if(j == n+1)j = 1;}break;}}}for(i=1; i<=n; i++)//最后一个找一个空位放进去就行了{if(a[i] == 0){a[i] = n;break;}}printf("%d",a[1]);for(i=2; i<=n; i++){printf(" %d",a[i]);}printf("\n");}return 0;
}

作者的标称,跪拜啊

 
#include<bits/stdc++.h>
using namespace std;
deque<int >vec;
int main()
{int ncase;int t,i,j;cin>>ncase;while(ncase--){cin>>t;vec.push_back(t);for(i=t-1;i>=1;i--){vec.push_back(i);for(j=1;j<=i;j++){int temp=vec.front();vec.push_back(temp);vec.pop_front();}}while(!vec.empty()){printf("%d ",vec.back());vec.pop_back();}printf("\n");}return 0;
}


更多推荐

河南第六届ACM省赛(Card Trick)

本文发布于:2024-02-28 03:14:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768001.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:河南   第六届   ACM   Trick   Card

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!