Contest 20140923 登月计划 BabyStepGaintStep
登月计划
- 总时间限制:
- 40000ms
- 内存限制:
- 256000kB
- 描述
-
HJA在和学弟学数学,于是便有了一道非常简单的数学题:求满足 的最小自然数x。
- 输入
- 输入数据一行三个正整数a、b、p,我们保证p是一个质数。
- 输出
- 一行一个整数代表最小的自然数x,如果不存在这样的x输出-1。
- 样例输入
-
2 1 3
- 样例输出
-
0
- 提示
- 对于30%的数据,1≤p≤1000。
对于100%的数据,1≤a,b<p≤10^12。< dd=""> - 来源
- zhonghaoxi
BabyStepGiantStep
這道題考場上卡在了求解 a*x == b (mod p) 這一步上。
解a*x == b (mod p) 方法爲
a * b^(-1) * x == 1 (mod p)
x= (a*b^(-1))^(-1)
然而這樣還是要TLE,觀察發現其中每次求值時a總會乘上一個常數t,則x每次乘上t^(-1)就行了
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<string>
#include<queue>
using namespace std;
#ifdef WIN32
#define LL "%I64d"
#else
#define LL "%lld"
#endif
#define MAXN 1100000
#define MAXV MAXN*2
#define MAXE MAXV*2
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3fLL
#define VAL1 1000007
#define PROB "braveheart"
typedef long long qword;
qword base,res,mod; struct Edge
{
qword t,v;
Edge *next;
}E[MAXE],*V[VAL1+];
int tope=-;
void addedge(int x,qword y,qword z)
{
E[++tope].t=y;
E[tope].v=z;
E[tope].next=V[x];
V[x]=&E[tope];
}
inline qword multi(qword x,qword y)
{
qword ret=;
if (y<)y=-y,x=-x;
while (y)
{
if (y&)ret=(ret+x)%mod;
x=(x+x)%mod;
y>>=;
}
return ret;
}
qword pow_mod(qword x,qword y,qword mod)
{
qword ret=;
while (y)
{
if (y&)ret=multi(ret,x);
x=multi(x,x);
y>>=;
}
return ret;
} int main()
{
freopen(PROB".in","r",stdin);
freopen(PROB".out","w",stdout);
int i;
qword x,y,z;
scanf(LL LL LL,&base,&res,&mod);
int sb=ceil(sqrt(mod-));
//baby step
x=;
for (i=;i<sb;i++)
{
addedge(x%VAL1,i,x);
x=multi(x,base);
}
qword val1;
val1=pow_mod(base,sb,mod);
qword a_i=;
Edge *ne;
bool flag=false;
qword t;
x=res%mod;
y=pow_mod(val1,mod-,mod);
for (i=;i<=sb;i++)
{
for (ne=V[x%VAL1];ne;ne=ne->next)
{
if (ne->v==x)
{
flag=true;
t=ne->t;
}
}
if (flag)
{
printf(LL "\n",(qword)i*sb+t);
return ;
}
x=multi(x,y);
}
printf("-1\n");
return ;
}
Contest 20140923 登月计划 BabyStepGaintStep的更多相关文章
- 阿波罗11号登月飞船电脑控制系统源码(AGC)
阿波罗11号登月飞船电脑控制系统源码(AGC) http://download.csdn.net/detail/downiis6/9574926 down url: https://github.co ...
- 2018年 7月总结&8月计划
7月悄然而过... 英语: a打卡率:1号上课没有完成听力,7号上课没有完成阅读,21,22号考试 没有阅读 PS:学习效果测评 1)不要再阅读china English 2)单词要拼写 3)听力句子 ...
- RQNOJ PID192 梦幻大PK [2017年6月计划 二分图02]
PID192 / 梦幻大PK ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态 查看最后一次评测记录 质量 7 题目评价 质量 7 ★★★★★ ★★★★☆ ★★★☆☆ ★★☆ ...
- HDU3078 Network [2016年6月计划 树上问题05]
Network Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- HDU3887 Counting Offspring [2017年6月计划 树上问题03]
Counting Offspring Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 洛谷P2912 [USACO08OCT]牧场散步Pasture Walking [2017年7月计划 树上问题 01]
P2912 [USACO08OCT]牧场散步Pasture Walking 题目描述 The N cows (2 <= N <= 1,000) conveniently numbered ...
- Contest 20140923 潛行世界 拓撲排序,期望
潜行世界 查看 提交 统计 提问 总时间限制: 10000ms 内存限制: 256000kB 描述 HJA和学弟还在旅游中,这次他们来到了潜行世界.潜行世界是一个N个点M条边的有向无环图.每条路对 ...
- 洛谷P1368 均分纸牌(加强版) [2017年6月计划 数论14]
P1368 均分纸牌(加强版) 题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,纸牌总数必为 N 的倍数.可以在任一堆上取1张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取 ...
- 洛谷P1621 集合 [2017年6月计划 数论13]
P1621 集合 题目描述 现在给你一些连续的整数,它们是从A到B的整数.一开始每个整数都属于各自的集合,然后你需要进行一下的操作: 每次选择两个属于不同集合的整数,如果这两个整数拥有大于等于P的公共 ...
随机推荐
- [TypeScript] Configuring a New TypeScript Project
This lesson walks you through creating your first .tsconfig configuration file which will tell the T ...
- tcpreplay安装使用
#Author: ypguo#Data: 2010.4.23#Version: 1.2 增加了修改VLAN tag内容. 1.1 修改了cygwin下安装的内容 ...
- /bin/bash^M: bad interpreter: 没有那个文件或目录--转载
运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不完全兼容...具体细节不管,如果验证: vim test.sh: ...
- Linux 安装 Python3.5
1. 准备 操作系统:Red Hat Enterprise Linux Server release 6.5 (Santiago) Python 安装包:Python-3.5.2.tgz 下载地址:h ...
- Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)
接下来我们通过项目案例来介绍:这个利用谷歌API对数据库增删改查 1.首先项目图: 2.这里的布局文件activity_main.xml: <LinearLayout xmlns:android ...
- 使用CSS的类名交集复合选择器
首先先看一下基本定义: 复合选择器就是两个或多个基本选择器,通过不同方式连接而成的选择器,主要包括“交集”选择器.“并集”选择器.“后代”选择器. 交集选择器 “交集”复合选择器是由两个选择器直接连接 ...
- AndroidStudio怎么将开源项目发布到jcenter
前言 自己在网上搜了一大堆,大体就两种方法,而我选择的是其中代码少的的方法,不过他们或多或少留下了少许的坑,(按他们的方法我是上传成功,但不能发布到jCenter上去,也可能是我自己的问题o(≧v≦) ...
- Spring 注解回顾
[copy] 参考资料 赵蒙
- ASP.NET MVC 第七回 UrlHelper
这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方 ...
- Android常用错误解决汇总
一.No active compatible AVD's or devices found. Relaunch this configuration after connecting a device ...