luogu 4884 多少个1 (BSGS)
很有意思的一个签到题 然而考场上并没有切掉
$1111...111=K(mod\;m)$
$10^{x}=9K+1(mod\;m)$
用$BSGS$求解即可
模数爆了$int$,需要快速乘,然而模数是$10^{11}$级别并不是特别大,可以利用位运算进行$O(1)$快速乘
1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #define N1 4000010 6 #define M1 400010 7 #define ll long long 8 #define dd double 9 #define cll const long long 10 #define inf 23333333333333333ll 11 using namespace std; 12 13 ll K,M,A; 14 struct Hsh{ 15 #define maxn 4000000 16 int head[N1],nxt[M1],val[M1],cte;ll to[M1]; 17 void ins(ll x,int w) 18 { 19 int u=x%maxn; ll v; 20 for(int j=head[u];j;j=nxt[j]) 21 { 22 v=to[j]; 23 if(v==x) return; 24 } 25 cte++; to[cte]=x; nxt[cte]=head[u]; 26 val[cte]=w; head[u]=cte; 27 } 28 int find(ll x) 29 { 30 int u=x%maxn; ll v; 31 for(int j=head[u];j;j=nxt[j]) 32 { 33 v=to[j]; 34 if(v==x) return val[j]; 35 } 36 return -1; 37 } 38 }h; 39 40 inline ll qmul(ll a,ll b){ 41 return ((((a>>25)*b%M)<<25)%M+(a&((1<<25)-1))*b%M)%M; 42 } 43 ll qpow(ll x,ll y) 44 { 45 ll ans=1; 46 while(y){ 47 if(y&1) ans=qmul(ans,x); 48 x=qmul(x,x); y>>=1; 49 }return ans; 50 } 51 52 int main() 53 { 54 scanf("%lld%lld",&K,&M); 55 A=(9ll*K+1)%M; 56 ll sq=sqrt(M),i,pw,now,ans; 57 for(pw=qpow(10ll,sq),now=1,i=1;(i-1)*sq<M;i++) 58 { 59 now=qmul(now,pw); 60 h.ins(now,i); 61 } 62 for(now=A,ans=inf,i=0;i<sq;i++) 63 { 64 pw=h.find(now); 65 if(pw!=-1) ans=min(ans,pw*sq-i); 66 now=qmul(now,10ll); 67 } 68 printf("%lld\n",ans); 69 return 0; 70 }
转载于:https://www.cnblogs.com/guapisolo/p/10250714.html
luogu 4884 多少个1 (BSGS)相关推荐
- luogu P3306 [SDOI2013] 随机数生成器(BSGS,数列求通项,毒瘤特判)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 发个水题的 题解证明我还在() luogu P3306 [SDOI2013] 随机数生成器 Webli ...
- P4884-多少个1?【BSGS】
正题 题目链接:https://www.luogu.com.cn/problem/P4884 题目大意 求一个最小的nnn使得nnn个连续的111其在模mmm意义下等于kkk. 6≤m≤1011,0& ...
- P3306-[SDOI2013]随机数生成器【BSGS】
正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个p,a,b,x1,tp,a,b,x_1,tp,a,b,x1,t,有xi=axi−1+b ...
- 浅谈BSGS和EXBSGS
我的 BSGS 和各位犇犇的差不多,但是不需要求逆元 Luogu [ TJOI2007 ] 可爱的质数 原题展现 题目描述 给定一个质数 \(p\),以及一个整数 \(b\),一个整数 \(n\),现 ...
- luogu P1549 棋盘问题(2) 题解
luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...
- [Luogu] 选学霸
https://www.luogu.org/problemnew/show/P2170 并查集+DP #include <iostream> #include <cstring> ...
- Luogu 2470 [SCOI2007]压缩
和Luogu 4302 [SCOI2003]字符串折叠 差不多的想法,区间dp 为了计算方便,我们可以假设区间[l, r]的前面放了一个M,设$f_{i, j, 0/1}$表示区间$[i, j]$中是 ...
- 【Luogu】P1613 跑路
[Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...
- Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...
最新文章
- 空洞卷积(Dilated Convolution):有之以为利,无之以为用
- luogu 3806
- 使用 .NET 实现 Ajax 长连接 (Part 1 - Comet Web Service)
- 2020-11-18(如何打开.jar工具)
- rabbitmq使用_RabbitMQ的使用(二) RabbitMQ服务在单机中做集群
- Jmeter 乱码解决方法
- 北大青鸟软件工程师ACCP4.0课程
- vue template标签_vue为什么要求组件模板只能有一个根元素?
- 如何在HTML中使用JavaScript代码
- 细胞自动机 通用计算机,科学网—《走近混沌》-27-初级细胞自动机 - 张天蓉的博文...
- I2C 时序详解,精确到每一个时钟
- ai跟随路径_ai中图像怎么沿着路径走
- ROSLAUNCH 的.launch/XML 语法
- 智能型电话远程遥控器
- 非常道:ChatGPT 与思想革命
- aps后缀是什么文件_asp文件扩展名,asp文件怎么打开?
- python给列表的N个元素赋值-*表达式
- 恭喜你,未来的CISSPer,你需要知道的背书全流程和小秘密
- cadence SPB17.4 - allegro - 手工放置原理图没有的封装
- 学籍管理系统c语言,c语言学籍信息管理系统设计
热门文章
- oracle怎么使用包,oracle包(package)入门——应用实例
- php文本框清除格式,php如何清除HTML格式
- JQueryDOM之CSS操作
- [leetcode]5340. 统计有序矩阵中的负数
- 牛客练习赛31: D. 神器大师泰兹瑞与威穆(链表)
- bzoj 1131: [POI2008]Sta(DPS)
- 2017 Multi-University Training Contest - Team 7:1005. Euler theorem(答案是(n+3)/2)
- 最近邻插值算法 python实现
- C语言解决约瑟夫环问题 详细注释
- 一个demo学会java