【洛谷九月月赛T1】签到题(bsgs)(快速乘)
说好的签到题呢qwq。。。。怎么我签到题都不会啊qwq
之后看了bsgs才发现貌似不是那么那么难fake!!什么东西。。。
先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果一样,但是可以处理更大的整数),判断是否符合题意。这个很好想也很好打,得分70分):
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long k,m;
void ans()
{
long long x=0;
int cnt=0;
for(;;)
{
cnt++;
x=(x*10+1)%m;
if(x==k)
{
cout<<cnt<<endl;
exit(0);
}
}
}
int main()
{
scanf("%lld%lld",&k,&m);
ans();
return 0;
}
原题等价于\(10N≡9K+1(modm)10^N\equiv 9K+1\pmod m10N≡9K+1(modm)\)
之后快速乘+BSGS即可
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
using namespace std;
typedef long long ll;
ll k,m;
map<ll,ll> mp;
inline ll mul(ll x,ll y,ll mod)
{
ll tmp=(x*y-(ll)((long double)x/mod*y+1.0e-8)*mod);
return tmp<0?tmp+mod:tmp;
}
//这个是O(1)复杂度的快速乘。。。我在网上抄的,但是我也不太理解是否会出现精度的问题
//但是目前为止貌似是还没有出过锅qwq
//背模板系列(逃)
ll fastpow(ll a,ll x,ll mod){
ll res=1;
while(x){
if(x&1){
res=mul(res,a,mod);
}
x>>=1;
a=mul(a,a,mod);
}
return res;
}
ll BSGS(ll a,ll b,ll p){
ll m=ceil(sqrt(p));
ll tmp=b;
mp.clear();
for(int i=0;i<=m;i++){
mp[tmp]=i;
tmp=mul(tmp,a,p);
}
a=fastpow(a,m,p);
tmp=a;
for(int i=1;i<=m;i++){
if(mp.count(tmp))
return i*m-mp[tmp];
tmp=mul(tmp,a,p);
}
return 0;
}
int main(){
scanf("%lld%lld",&k,&m);
k=(k*9+1)%m;
printf("%lld\n",BSGS(10,k,m));
return 0;
}
【洛谷九月月赛T1】签到题(bsgs)(快速乘)的更多相关文章
- 洛谷九月月赛T1 思考
很迷的一道题目,刚开始直接枚举n个1,然后去mod m ,爆0,后来发现一个神奇性质:找到递推公式An=An-1*10+1,枚举n,不断mod m,每递推一次就1的个数加一.居然可行! 听说余数具有可 ...
- 洛谷九月月赛II
题解:模拟 一旦不匹配就要break #include<iostream> #include<cstdio> #include<cstring> #include& ...
- 洛谷 P3672 小清新签到题 [DP 排列]
传送门 题意:给定自然数n.k.x,你要求出第k小的长度为n的逆序对对数为x的1~n的排列 $n \le 300, k \le 10^13$ 一下子想到hzc讲过的DP 从小到大插入,后插入不会对前插 ...
- 洛谷五月月赛 T1
做一下差分之后,把每个位置的差分数看成这个位置有多少个石子,于是每次操作就是选一个有石子的位置并把这个位置的石子移到后面的位置(如果这个位置已经是最后了那么直接扔掉). 所以就是带权石子问题了,最后判 ...
- [洛谷P3672]小清新签到题
题目描述 题目还是简单一点好. 给定自然数n.k.x,你要求出第k小的长度为n的逆序对对数为x的1~n的排列a1,a2...an,然后用仙人图上在线分支定界启发式带花树上下界最小费用流解决问题,保证存 ...
- 【洛谷2791】幼儿园篮球题(第二类斯特林数,NTT)
[洛谷2791]幼儿园篮球题(第二类斯特林数,NTT) 题面 洛谷 题解 对于每一组询问,要求的东西本质上就是: \[\sum_{i=0}^{k}{m\choose i}{n-m\choose k-i ...
- 洛谷 P5596 【XR-4】题
洛谷 P5596 [XR-4]题 洛谷传送门 题目描述 小 X 遇到了一道题: 给定自然数 a,ba,b,求满足下列条件的自然数对 (x,y)(x,y) 的个数: y^2 - x^2 = ax + b ...
- 【洛谷】CYJian的水题大赛 解题报告
点此进入比赛 \(T1\):八百标兵奔北坡 这应该是一道较水的送分题吧. 理论上来说,正解应该是DP.但是,.前缀和优化暴力就能过. 放上我比赛时打的暴力代码吧(\(hl666\)大佬说这种做法的均摊 ...
- 洛谷五月月赛【LGR-047】划水记
虽然月赛有些爆炸,但我永远资瓷洛谷! 因为去接水,所以迟到了十几分钟,然后洛谷首页就打不开了-- 通过洛谷题库间接打开了比赛,看了看\(TA\),WTF?博弈论?再仔细读了读题,嗯,判断奇偶性,不过要 ...
随机推荐
- 【308】Python os.path 模块常用方法
参考:Python os.path 模块 参考:python3中,os.path模块下常用的用法总结 01 abspath 返回一个目录的绝对路径. 02 basename 返回一个目录的基名 ...
- PHP - 输出缓存 - 关于ob系列函数和flush函数
偶然机会看到了flush().知道他的神奇功能可以用在异步传输的comet 模式之后,于是我去试了试这个方法.然后翻手册去看了看什么意思.发现它神奇的和ob类函数在一起.有点好奇,先放一放,来说flu ...
- 添加 MyEclipse Persistence Tools 类库
1).右键点击你的项目,然后选择Properties.2).在 Java Build Path 页面, 在 Libraries 面板下选择 Add Library….3).选择 MyEclipse L ...
- dev GridControl显示标题
gridview:ShowViewCaption = TrueViewCation = "32435354354"
- mysql数据库怎么安装到自己的电脑上?
安装mysql1.安装过程中输⼊入Y确认继续安装 2.设置密码1.第⼀一次设登陆密码 2.第⼆二次验证密码 安装完成
- C#的ComboBox学习使用2018.08.03
ComboBox是一个有下拉列表的文本显示框,其text为当前的文本,item属性为项 comboBox1.Items.Add("); id = comboBox1.Text; 可以采用se ...
- centos7 安装mysql5.6.32
1. 检查是否存在旧的mysql,执行: rpm -qa|grep -i mysql PS:若存在旧mysql,删除查询到的旧mysql,执行: rpm -e --nodeps XXXX ...
- haproxy 配置 说明
一.环境说明实验环境OS CentOS5.4192.168.0.14 proxy192.168.0.24 web1192.168.0.64 web2 官方地址:http://hapr ...
- 解剖Nginx·自动脚本篇(4)工具型脚本系列
目录 auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h) auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_conf ...
- Python3 获取RDS slowlog+微信接口报警
一.功能说明 二.代码详情 1.通过阿里sdk获取慢查询列表,格式化. 2.企业微信报警接口 3.deamon #!/usr/bin/python #-*- conding:utf-8 -*- fro ...