luogu 4884 多少个1 (BSGS)
很有意思的一个签到题 然而考场上并没有切掉
$1111...111=K(mod\;m)$
$10^{x}=9K+1(mod\;m)$
用$BSGS$求解即可
模数爆了$int$,需要快速乘,然而模数是$10^{11}$级别并不是特别大,可以利用位运算进行$O(1)$快速乘
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N1 4000010
#define M1 400010
#define ll long long
#define dd double
#define cll const long long
#define inf 23333333333333333ll
using namespace std; ll K,M,A;
struct Hsh{
#define maxn 4000000
int head[N1],nxt[M1],val[M1],cte;ll to[M1];
void ins(ll x,int w)
{
int u=x%maxn; ll v;
for(int j=head[u];j;j=nxt[j])
{
v=to[j];
if(v==x) return;
}
cte++; to[cte]=x; nxt[cte]=head[u];
val[cte]=w; head[u]=cte;
}
int find(ll x)
{
int u=x%maxn; ll v;
for(int j=head[u];j;j=nxt[j])
{
v=to[j];
if(v==x) return val[j];
}
return -;
}
}h; inline ll qmul(ll a,ll b){
return ((((a>>)*b%M)<<)%M+(a&((<<)-))*b%M)%M;
}
ll qpow(ll x,ll y)
{
ll ans=;
while(y){
if(y&) ans=qmul(ans,x);
x=qmul(x,x); y>>=;
}return ans;
} int main()
{
scanf("%lld%lld",&K,&M);
A=(9ll*K+)%M;
ll sq=sqrt(M),i,pw,now,ans;
for(pw=qpow(10ll,sq),now=,i=;(i-)*sq<M;i++)
{
now=qmul(now,pw);
h.ins(now,i);
}
for(now=A,ans=inf,i=;i<sq;i++)
{
pw=h.find(now);
if(pw!=-) ans=min(ans,pw*sq-i);
now=qmul(now,10ll);
}
printf("%lld\n",ans);
return ;
}
luogu 4884 多少个1 (BSGS)的更多相关文章
- luogu 4884 多少个1?
题目描述: 给定整数K和质数m,求最小的正整数N,使得 11111⋯1(N个1)≡K(mod m) 说人话:就是 111...1111 mod m =K 题解: 将两边一起*9+1,左边就是10^an ...
- Luogu P3846 BSGS算法
https://www.luogu.com.cn/problem/P3846 BSGS这个东西是用来干啥的? 形如下面这个式子: \[a^b = c\;(mod\;p) \] 其中:p是一个质数.\( ...
- NOIP前刷题记录
因为本蒻实在太蒻了...对于即将到来的NOIP2018ssfd,所以下决心要把自己近期做过的题目(衡量标准为洛谷蓝题难度或以上)整理一下,归归类,简单地写一下思路,就当作自己复习了吧qwq 本随笔持续 ...
- NOIP刷题
搜索 [NOIP2013]华容道 最短路+带剪枝的搜索,是一个思维难度比较大的题目. CF1064D Labyrinth 考虑贪心,用双向队列bfs [NOIP2017]宝藏 剪枝搜索出奇迹 题解:h ...
- 【洛谷4884】多少个1?(BSGS)
点此看题面 大致题意: 求满足\(个111...111(N\text{个}1)\equiv K(mod\ m)\)的最小\(N\). 题目来源 这题是洛谷某次极不良心的月赛的\(T1\),当时不会\( ...
- 【Luogu】P2485计算器(快速幂,exgcd和Bsgs模板)
题目链接 题目描述非常直接,要求你用快速幂解决第一问,exgcd解决第二问,bsgs解决第三问. emmmm于是现学bsgs 第二问让求最小整数解好烦啊…… 假设我们要求得方程$ax+by=c(mod ...
- BZOJ 2242 / Luogu P2485 [SDOI2011]计算器 (BSGS)
type 1type\ 1type 1 就直接快速幂 type 2type\ 2type 2 特判+求逆元就行了. type 3type\ 3type 3 BSGS板 CODE #include< ...
- Luogu P3846 [TJOI2007] 可爱的质数/【模板】BSGS
题意 给定 \(y,z,p\),求最小的正整数 \(x\) 满足 \(y^x\equiv z\bmod p\),保证 \(p\) 是质数. \(\texttt{Data Range:}2\leq y, ...
- 数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho
数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p ...
随机推荐
- cogs 10. 信号无错传输
10. 信号无错传输 ★★☆ 输入文件:dlj.in 输出文件:dlj.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 为提高传递信息的保密性和可靠性,两个军事 ...
- 开发,从需求出发 · 之四 春天在这里
首先,我要大字标语表达立场: 你所使用的framework & non-core features,就跟女人穿在身上的衣服一样,越少越好! watermark/2/text/aHR0cDovL ...
- Fitnesse安装
Fitnesse安装比较简单 1.确保机器上已经安装了java环境
- QString够绕的,分为存储(编译器)和解码(运行期),还有VS编译器的自作主张,还有QT5的变化
多读几篇,每篇取几句精华加深我对QString的理解. ------------------------------------------------------------------ QStri ...
- c22---枚举
// // main.c // 枚举基本概念 #include <stdio.h> int main(int argc, const char * argv[]) { // int sex ...
- Java-Maven:Maven清单
ylbtech-Java-Maven:Maven清单 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http ...
- [CSharp] C#开源大全
商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...
- 多个submit
<html><body> <form action="welcome.php" method="post">Name: &l ...
- SQL注入原理解析以及举例1
sql注入是指web应用程序对用户输入数据的合法性没有判断,导致攻击者可以构造不同的sql语句来实现对数据库的操作. sql注入漏洞产生满足条件: 1:用户能够控制数据的输入. 2:原本需要执行的代码 ...
- 2015 多校赛 第一场 1007 (hdu 5294)
总算今天静下心来学算法.. Description Innocent Wu follows Dumb Zhang into a ancient tomb. Innocent Wu’s at the e ...