【BZOJ-1965】SHUFFLE 洗牌 快速幂 + 拓展欧几里德
1965: [Ahoi2005]SHUFFLE 洗牌
Time Limit: 3 Sec Memory Limit: 64 MB
Submit: 541 Solved: 326
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
HINT
Source
Solution
以为是一些很高端的东西,不过先推了4组,模拟N=10的时侯,打了个模拟,记录了前面的值
于是发现了规律:$x\times 2^{m}\equiv l\left ( mod \left ( n+1 \right ) \right )$
那么硬上 快速幂 和 拓展欧几里德 即可
Code
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
long long read()
{
long long x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
long long n,m,l;
long long quick_pow(long long x,long long y,long long p)
{
long long re=;
for (int i=y; i; i>>=,x=x*x%p)
if (i&) re=re*x%p;
return re;
}
long long exgcd(long long a,long long b,long long &x,long long &y)
{
if (b==) {x=; y=; return a;}
long long gcd=exgcd(b,a%b,x,y);
long long tmp=x; x=y; y=tmp-a/b*y;
return gcd;
}
long long Gcd(long long a,long long b)
{
if (b==) return a; return Gcd(b,a%b);
}
int main()
{
n=read(),m=read(),l=read();
m=quick_pow(,m,n+); n++;
long long gcd=Gcd(n,m); n/=gcd; m/=gcd; l/=gcd;
long long x,y; gcd=exgcd(m,n,x,y);
x=x*l%n; while (x<) x+=n;
printf("%lld\n",x);
return ;
}
心酸的历程...犯了sb错误...不过按说找到式子就是sb题了
【BZOJ-1965】SHUFFLE 洗牌 快速幂 + 拓展欧几里德的更多相关文章
- BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...
- 【bzoj1965】[Ahoi2005]SHUFFLE 洗牌 - 快速幂
为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打发长途旅行 ...
- BZOJ 1965 [AHOI2005]洗牌
题目描述 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联提议用扑克牌打 ...
- bzoj 2242: [SDOI2011]计算器 BSGS+快速幂+扩展欧几里德
2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 你被 ...
- BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )
对于第x个数, 下一轮它会到位置p. 当x<=N/2, p = x*2 当x>N/2, p = x*2%(N+1) 所以p = x*2%(N+1) 设一开始的位置为t, 那么t*2M%(N ...
- 【bzoj1965】: [Ahoi2005]SHUFFLE 洗牌 数论-快速幂-扩展欧几里得
[bzoj1965]: [Ahoi2005]SHUFFLE 洗牌 观察发现第x张牌 当x<=n/2 x=2x 当x>n/2 x=2x-n-1 好像就是 x=2x mod (n+1) 就好 ...
- 1965: [Ahoi2005]SHUFFLE 洗牌
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 408 Solved: 240[Submit][St ...
- [AHOI2005] SHUFFLE 洗牌
1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 952 Solved: 630[Submit][St ...
- random array & shuffle 洗牌算法 / 随机算法
random array & shuffle shuffle 洗牌算法 / 随机算法 https://en.wikipedia.org/wiki/Fisher–Yates_shuffle ES ...
随机推荐
- 权限框架 - shiro 授权demo
之前说了权限认证,其实也就是登录验证身份 这次来说说shiro的授权 shiro可以针对角色授权,或者访问资源授权 两者都行,但是在如今的复杂系统中,当然使用后者,如果你是小系统或者私活的话,前者即可 ...
- 关于codereview工具与建议
http://www.ibm.com/developerworks/rational/library/11-proven-practices-for-peer-review/
- (已解决) 未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral,
在项目web.config里面添加: <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4F ...
- 在centos下部署docker内网私服
Docker内网私服:docker-registry with nginx & ssl on centos docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已 ...
- php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
php 上传大文件主要涉及配置 upload_max_filesize 和post_max_size两个选项 今天在做上传的时候出现一个非常怪的问题,有时候表单提交可以获取到值,有时候就获取不到了 ...
- Javascript 中的 in, hasOwnProperty, delete, for/in
in 运算符 判断对象是否拥有某一属性只要对象拥有该属性,就会返回true,否则false var point = { x:1, y:1 };alert( 'x' in point ); //tru ...
- *.location.href 用法:
*.location.href 用法: top.location.href=”url” 在顶层页面打开url(跳出框架) self.location.href=”url” ...
- [服务]ftp主动模式和被动模式
经常忘记这个东西.于是总结下这东西感受下这个协议. FTP连接方式 控制连接:标准端口为21,用于发送FTP命令信息 数据连接:标准端口为20,用于上传.下载数据 数据连接的建立类型: 主动模式:服务 ...
- Ta-lib 函数一览
import tkinter as tk from tkinter import ttk import matplotlib.pyplot as plt import numpy as np impo ...
- Angular权威指南学习笔记
第一章. 初识Angular--Angular是MVW的Js框架. 第二章. 数据绑定--ViewModel中不仅可以含有变量,还可以还有事件.可以通过事件来控制变量的值改 ...