很有意思的一个签到题 然而考场上并没有切掉

$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)相关推荐

  1. luogu P3306 [SDOI2013] 随机数生成器(BSGS,数列求通项,毒瘤特判)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 发个水题的 题解证明我还在() luogu P3306 [SDOI2013] 随机数生成器 Webli ...

  2. P4884-多少个1?【BSGS】

    正题 题目链接:https://www.luogu.com.cn/problem/P4884 题目大意 求一个最小的nnn使得nnn个连续的111其在模mmm意义下等于kkk. 6≤m≤1011,0& ...

  3. 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 ...

  4. 浅谈BSGS和EXBSGS

    我的 BSGS 和各位犇犇的差不多,但是不需要求逆元 Luogu [ TJOI2007 ] 可爱的质数 原题展现 题目描述 给定一个质数 \(p\),以及一个整数 \(b\),一个整数 \(n\),现 ...

  5. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  6. [Luogu] 选学霸

    https://www.luogu.org/problemnew/show/P2170 并查集+DP #include <iostream> #include <cstring> ...

  7. Luogu 2470 [SCOI2007]压缩

    和Luogu 4302 [SCOI2003]字符串折叠 差不多的想法,区间dp 为了计算方便,我们可以假设区间[l, r]的前面放了一个M,设$f_{i, j, 0/1}$表示区间$[i, j]$中是 ...

  8. 【Luogu】P1613 跑路

    [Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...

  9. Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...

最新文章

  1. 空洞卷积(Dilated Convolution):有之以为利,无之以为用
  2. luogu 3806
  3. 使用 .NET 实现 Ajax 长连接 (Part 1 - Comet Web Service)
  4. 2020-11-18(如何打开.jar工具)
  5. rabbitmq使用_RabbitMQ的使用(二) RabbitMQ服务在单机中做集群
  6. Jmeter 乱码解决方法
  7. 北大青鸟软件工程师ACCP4.0课程
  8. vue template标签_vue为什么要求组件模板只能有一个根元素?
  9. 如何在HTML中使用JavaScript代码
  10. 细胞自动机 通用计算机,科学网—《走近混沌》-27-初级细胞自动机 - 张天蓉的博文...
  11. I2C 时序详解,精确到每一个时钟
  12. ai跟随路径_ai中图像怎么沿着路径走
  13. ROSLAUNCH 的.launch/XML 语法
  14. 智能型电话远程遥控器
  15. 非常道:ChatGPT 与思想革命
  16. aps后缀是什么文件_asp文件扩展名,asp文件怎么打开?
  17. python给列表的N个元素赋值-*表达式
  18. 恭喜你,未来的CISSPer,你需要知道的背书全流程和小秘密
  19. cadence SPB17.4 - allegro - 手工放置原理图没有的封装
  20. 学籍管理系统c语言,c语言学籍信息管理系统设计

热门文章

  1. oracle怎么使用包,oracle包(package)入门——应用实例
  2. php文本框清除格式,php如何清除HTML格式
  3. JQueryDOM之CSS操作
  4. [leetcode]5340. 统计有序矩阵中的负数
  5. 牛客练习赛31: D. 神器大师泰兹瑞与威穆(链表)
  6. bzoj 1131: [POI2008]Sta(DPS)
  7. 2017 Multi-University Training Contest - Team 7:1005. Euler theorem(答案是(n+3)/2)
  8. 最近邻插值算法 python实现
  9. C语言解决约瑟夫环问题 详细注释
  10. 一个demo学会java