HDU 5668 Circle (约瑟夫游戏,求解同余方程组)
2016-04-25 09:36
113 查看
样例:
1
7
7 6 5 4 3 2 1
题解:约瑟夫环问题,可以转换成中国剩余定理,然后就是套模板了。好坑啊,我每轮游戏都从第一个人开始计数。。而且题意也理解错了。。输入是代表第一个人第七轮游戏才出局,而不是第七个人第一轮游戏出局。。。
1
7
7 6 5 4 3 2 1
题解:约瑟夫环问题,可以转换成中国剩余定理,然后就是套模板了。好坑啊,我每轮游戏都从第一个人开始计数。。而且题意也理解错了。。输入是代表第一个人第七轮游戏才出局,而不是第七个人第一轮游戏出局。。。
#include <cstdio> #include <iostream> #include <cstring> #include <string> #include <cstdlib> #include <algorithm> #include <cmath> #include <vector> #include <set> #include <list> #include <queue> #include <map> #include <stack> using namespace std; #define L(i) i<<1 #define R(i) i<<1|1 #define INF 0x3f3f3f3f #define pi acos(-1.0) #define eps 1e-9 #define maxn 100010 #define MOD 1000000007 int num[22],m[22],a[22],c[22]; long long extend_gcd(long long a,long long b,long long &x,long long &y) { if(a == 0 && b == 0) return -1; if(!b) { x = 1; y = 0; return a; } long long d = extend_gcd(b,a%b,y,x); y -= a/b*x; return d; } bool solve(int &m0,int &a0,int m,int a) { long long y,x; int g = extend_gcd(m0,m,x,y); if(abs(a-a0)%g) return 0; x *= (a - a0) / g; x %= m/g; a0 = (x*m0 + a0); m0 *= m/g; a0 %= m0; if(a0 < 0) a0 += m0; return 1; } bool MLSE(int &m0,int &a0,int n) { bool flag = 1; m0 = 1; a0 = 0; for(int i = 0; i < n; i++) if(!solve(m0,a0,m[i],a[i])) { flag = 0; break; } return flag; } int main() { int t; scanf("%d",&t); while(t--) { int n,flag[22]; memset(flag,1,sizeof(flag)); scanf("%d",&n); for(int i = 0; i < n; i++) scanf("%d",&c[i]); for(int i = 0; i < n; i++) num[c[i]-1] = i+1; int k = n,l = 1; for(int i = 0; i < n; i++) { int o = 0; for(int j = l; ; j++) { if(j > n) j -= n; if(flag[j]) o++; if(j == num[i]) break; } a[i] = o; flag[num[i]] = 0; l = num[i]; m[i] = k--; } int m0,a0; if(MLSE(m0,a0,n)) { if(!a0) printf("%d\n",a0+m0); else printf("%d\n",a0); } else printf("Creation August is a SB!\n"); } }
相关文章推荐
- node.js 源码安装node.js
- ICTCLAS 汉语词性标注集
- 对已经add的文件不在跟踪
- Windows 10年度更新Anniversary Update预览版开始推送,版本号Build 14328
- 使用ltrace工具跟踪PHP库函数调用的方法
- jquery学习02(效果)
- CI MY_Controller &MY_Model
- [CareerCup] 17.7 English Phrase Describe Integer 英文单词表示数字
- 测量屏幕的宽高
- Tricks (四十一)—— 一 list 两用
- bzoj 1097: [POI2007]旅游景点atr(状压DP)
- 浙江省赛e题Modulo Query
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.解决
- 20160425css开发
- 一个很菜的问题半角和全角
- There is no Action mapped for namespace / and action name accredit.
- LINUX 下 find grep sed awk 的常见基本用法
- “香山雨男”初临香八拉
- java/android 设计模式之单例模式
- ASP.NET Substitution 控件的使用方法