2019ICPC徐州网络赛 A.Who is better?——斐波那契博弈&&扩展中国剩余定理
题意
有一堆石子,两个顶尖聪明的人玩游戏,先取者可以取走任意多个,但不能全取完,以后每人取的石子数不能超过上个人的两倍。石子的个数是通过模方程组给出的。
分析
斐波那契博弈有结论:当且仅当石子数为斐波那契数时,先手必败。
又因为 $n \leq 10^{15}$,在这个范围内的斐波那契数只有72个,可以预处理出来。
注意会爆long long !!
#include<iostream>
#include<cstdio>
#define LL __int128
using namespace std; const LL MAXN = ;
LL fibo[] = {,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}; int K;
LL C[MAXN], M[MAXN], x, y;
LL gcd(LL a, LL b) {
return b == ? a : gcd(b, a % b);
}
LL exgcd(LL a, LL b, LL &x, LL &y) {
if (b == ) {x = , y = ; return a;}
LL r = exgcd(b, a % b, x, y), tmp;
tmp = x; x = y; y = tmp - (a / b) * y;
return r;
}
LL inv(LL a, LL b) {
LL r = exgcd(a, b, x, y);
while (x < ) x += b;
return x;
}
int main() {
scanf("%d", &K);
for (int i = ; i <= K; i++) //x = C[i](mod M[i])
{
long long _m, _c;
scanf("%lld%lld", &_m, &_c);
M[i] = _m, C[i] = _c;
}
bool flag = ;
for (LL i = ; i <= K; i++) {
LL M1 = M[i - ], M2 = M[i], C2 = C[i], C1 = C[i - ], T = gcd(M1, M2);
if ((C2 - C1) % T != ) {flag = ; break;}
M[i] = (M1 * M2) / T; //可能爆long long
C[i] = ( inv( M1 / T , M2 / T ) * (C2 - C1) / T ) % (M2 / T) * M1 + C1;
C[i] = (C[i] % M[i] + M[i]) % M[i];
}
//printf("%lld\n", flag ? C[K] : -1);
if(flag == ) printf("Tankernb!\n");
else
{
bool flg = false;
for(int i = ;i < ;i++)
if(fibo[i] == C[K])
{
flg = true;
break;
}
if(flg) printf("Lbnb!\n");
else printf("Zgxnb!\n");
} return ;
}
2019ICPC徐州网络赛 A.Who is better?——斐波那契博弈&&扩展中国剩余定理的更多相关文章
- 2019icpc徐州网络赛_I_query
题意 给定一个序列,多次询问区间\([l,r]\)中满足\(min(a[i],a[j])==gcd(a[i],a[j])\)的数对\((i,j)\)数. 分析 其实就是求区间有倍数关系的数对数. 由于 ...
- 2019icpc徐州网络赛
A Who is better? 题意 excrt+斐波那契博弈 分析 Java的BigInteger对象默认为null,不能直接比较. 代码 import java.math.BigInteger; ...
- ICPC 2019 徐州网络赛
ICPC 2019 徐州网络赛 比赛时间:2019.9.7 比赛链接:The Preliminary Contest for ICPC Asia Xuzhou 2019 赛后的经验总结 // 比赛完才 ...
- 2018 ICPC 徐州网络赛
2018 ICPC 徐州网络赛 A. Hard to prepare 题目描述:\(n\)个数围成一个环,每个数是\(0\)~\(2^k-1\),相邻两个数的同或值不为零,问方案数. solution ...
- 线段树+单调栈+前缀和--2019icpc南昌网络赛I
线段树+单调栈+前缀和--2019icpc南昌网络赛I Alice has a magic array. She suggests that the value of a interval is eq ...
- 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)
query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...
- 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)
2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...
- [徐州网络赛]Longest subsequence
[徐州网络赛]Longest subsequence 可以分成两个部分,前面相同,然后下一个字符比对应位置上的大. 枚举这个位置 用序列自动机进行s字符串的下标转移 注意最后一个字符 #include ...
- 徐州网络赛B-BE,GE or NE【记忆化搜索】【博弈论】
In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...
随机推荐
- java笔记4—继承
继承: 作用: 提高了代码的复用性. 让类与类之间产生了关系,为多态提供了前提 继承中成员变量的特点: 继承中成员函数的特点: 方法重写: 注意:重写方法必须和被重写的方法具有相同的方法名,参数列表和 ...
- Wing-AEP平台LWM2M设备接入
实现Wing-AEP中国电信物联网开放平台,LWM2M设备接入 一.准备 接入模组:BC35-G 平台地址:https://www.ctwing.cn/ 点击右上角控制台 点击左侧栏点击产品中心 二. ...
- L2R 一:基础知识介绍
一.背景 l2r可以说是搜索推荐里面很常用的知识了,一直处于一知半解的地步,今天开个博客准备把这些零散的东西系统性整理好,一版就粗糙点了. 二.粗概 前段时间的项目主要和搜索引擎相关,记录下搜索引擎的 ...
- C# CheckBoxList绑定值,设置及获取
前端页面:.aspx <asp:CheckBoxList ID="ckbdot" runat="server" RepeatDirection=" ...
- showModalDialog的使用方法
基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDial ...
- spring boot打包,依赖、配置文件分离,拷贝启动脚本
一.最终打包的目录结构 二.项目结构 三.开始 1.最终打包的目录,可根据自己需要修改. <properties> <mzservice.path>${project.buil ...
- 使用springboot实现一个简单的restful crud——03、前端页面、管理员登陆(注销)功能
前言 这一篇我们就先引入前端页面和相关的静态资源,再做一下管理员的登陆和注销的功能,为后续在页面上操作数据做一个基础. 前端页面 前端的页面是我从网上找的一个基于Bootstrap 的dashboar ...
- 四 python中关于OOP的常用术语
抽象/实现 抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于 绘程序结构,从而实现这种模型.抽象不仅包括这种模型的数据属性,还定义了这些数据的接口. 对某种抽象的实现 ...
- ios手机app消息推送
h5+app项目,推送平台 " 个推 " 首先在manifest.json配置文件中点击模块权限配置,勾选push消息推送配置如图1-1 第二部在manifest.json配置文件 ...
- Spring @Transactional注解不起作用解决办法及原理分析
Transactional失效场景介绍 第一种 Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用.例如以下代码. 定义一个错误的@Trans ...