Description has only two Sentences(欧拉定理 +快速幂+分解质因数)
Description has only two Sentences |
| Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) |
| Total Submission(s): 124 Accepted Submission(s): 55 |
|
Problem Description
an = X*an-1 + Y and Y mod (X-1) = 0.
Your task is to calculate the smallest positive integer k that ak mod a0 = 0. |
|
Input
Each line will contain only three integers X, Y, a0 ( 1 < X < 231, 0 <= Y < 263, 0 < a0 < 231).
|
|
Output
For each case, output the answer in one line, if there is no such k, output "Impossible!".
|
|
Sample Input
2 0 9 |
|
Sample Output
1 |
|
Author
WhereIsHeroFrom
|
|
Source
HDOJ Monthly Contest – 2010.02.06
|
|
Recommend
wxl
|
/*
题意:如题给出的递推公式,让你求出最小的k满足ak mod a0 ==0; 如果没有的话输出impossible 初步思路:an=an-1*X+Y => an=Xn*a0+(1+X1+X2+.....+Xn-1)*Y (里面有一个等比数列)
=> 然后两边同时膜a0 得到 an mod a0 = ( (Xn -1) * Y ) mod a0 / (X -1) = 0
=> 令 T=Y/(X-1) 得到0 =T (Xn - 1) mod a0 (T是任意整数 )
=> 将 mod a0 移到左边
=> 0 (mod a0) = T (Xn - 1)
(这里的mod是提出来的)
=> 令p=__gcd(a0,T) 然后得到
=> 0 (mod a0/p) = T/p (Xn - 1) = 0 (mod a0') =T' (Xn - 1)
=> 此时a0' 和T' 互质了 那么得到
=> Xn-1=0 (mod a0') 如果(Xn -1 )mod a0' !=0那么就无解 即:
=> Xn mod a0' ==1 否则就是无解的情况
然后就没有思路了.......
#改进:由上一步能得出来 X^n=1(mod a0')
=> 欧拉定理,X^euler(a0')=1(mod a0');//其中X和a0'必须是互质的,不然没有解
=> 如果是互质的,那么然后就可以从a0'中的质因子枚举,然后快速幂就可以了
#感悟:!!!质因子忘记排序了,错了两罚!!!!想吐,一天了,就想了这一个题。。。。
*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll X,Y,A;
ll T; /*******************分解质因子模板*********************/
bool comp(ll a,ll b){
return a<b;
}
vector<ll>v;
void find(ll n)//分解质因子
{
v.clear();
ll m=(ll)sqrt(n+0.5);
for(ll i=;i<m;i++)
if(n%i==){
v.push_back(i);
v.push_back(n/i);
}
if(m*m==n) v.push_back(m);
sort(v.begin(),v.end(),comp);
}
/*******************分解质因子模板*********************/ /************快速幂模板****************/
ll power(ll n,ll x,ll mod){
if(x==) return ;
ll t=power(n,x/,mod);
t=t*t%mod;
if(x%==) t=t*n%mod;
return t;
}
/************快速幂模板****************/ /**************************欧拉函数模板*****************************/
//直接求解欧拉函数
ll euler(ll n){ //返回euler(n)
ll res=n,a=n;
for(int i=;i*i<=a;i++){
if(a%i==){
res=res/i*(i-);//先进行除法是为了防止中间数据的溢出
while(a%i==) a/=i;
}
}
if(a>) res=res/a*(a-);
return res;
}
/**************************欧拉函数模板*****************************/ int main(){
//freopen("in.txt","r",stdin);
while(scanf("%lld%lld%lld",&X,&Y,&A)!=EOF){
if(Y==){
puts("");
continue;
}
T=Y/(X-);
ll p=__gcd(T,A);//最大公因子
//化简到最简单
T/=p;
A/=p;//a0'
//cout<<T<<" "<<A<<endl;
if(__gcd(X,A)!=){//如果这两个数不是互质的,由欧拉定理的肯定是无解的
printf("Impossible!\n");
}else{
//X^euler(a0')=1(mod a0')
ll cur=euler(A);
find(cur);//分解质因子,打到p中
//cout<<v.size()<<endl;
for(int i=;i<v.size();i++){
//cout<<power(X,v[i],A)<<endl;
if(power(X,v[i],A)==){
printf("%lld\n",v[i]);
break;
}
}
}
}
return ;
}
Description has only two Sentences(欧拉定理 +快速幂+分解质因数)的更多相关文章
- BZOJ 3884: 上帝与集合的正确用法 扩展欧拉定理 + 快速幂
Code: #include<bits/stdc++.h> #define maxn 10000004 #define ll long long using namespace std; ...
- hdu 3307 Description has only two Sentences (欧拉函数+快速幂)
Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- 2^x mod n = 1(欧拉定理,欧拉函数,快速幂乘)
2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- Super A^B mod C (快速幂+欧拉函数+欧拉定理)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1759 题目:Problem Description Given A,B,C, You should quick ...
- hdu 2462(欧拉定理+高精度快速幂模)
The Luckiest number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】
1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS Memory Limit: 128 MBSubmit: 45 Solved: 8[Submit][Status][W ...
- [SDOI2010] 古代猪文 (快速幂+中国剩余定理+欧拉定理+卢卡斯定理) 解题报告
题目链接:https://www.luogu.org/problemnew/show/P2480 题目背景 “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色 ...
- URAL 1141. RSA Attack(欧拉定理+扩展欧几里得+快速幂模)
题目链接 题意 : 给你n,e,c,并且知道me ≡ c (mod n),而且n = p*q,pq都为素数. 思路 : 这道题的确与题目名字很相符,是个RSA算法,目前地球上最重要的加密算法.RSA算 ...
随机推荐
- Linux入门之常用命令(13) crontab
为当前用户创建cron服务 1. 键入 crontab -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/admin/jiaoben/bu ...
- JSP入门 导出文件
1.图片校验码 <img src="captcha.jpg" /> web.xml配置 <servlet> <servlet-name& ...
- centos 6.5系统下安装ibus及设置开机自启动
先说一下系统环境:centos 6.5,然后我是以root身份执行的,没有权限的用户参见sudo用法 第1步:查找并安装ibus安装包,命令如下: 找到一行: ibus-pinyin.x86_64 : ...
- asp.net web api 2.2 基础框架(带例子)
链接:https://github.com/solenovex/asp.net-web-api-2.2-starter-template 简介 这个是我自己编写的asp.net web api 2.2 ...
- bzoj4198 荷马史诗 哈夫曼编码
逐影子的人,自己就是影子. --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛>和&l ...
- java数据库编程之事务、视图、索引、备份、恢复
第五章:事务.视图.索引.备份和恢复 5.1:事务 事务的概念:事务(transcation)是讲一系列数据操作捆绑成为一个整体进行统计管理. 如果某一事务执行成功了,则该事务进行操作的所有数据将会提 ...
- C#取得站点跟目录
string strServer = "http://" + Request.ServerVariables["SERVER_NAME"].ToString() ...
- 使用Travis CI自动部署Hexo到GitHub
原文链接(转载请注明出处):使用Travis CI自动部署Hexo到GitHub 前言 使用 hexo + gitPages 搭建个人博客的人都知道,每当要发表一篇博文,第一步得手动使用 hexo g ...
- 聊聊VUE中的nextTick
在谈nextTick之前,先要说明一件事,可能在我们平时使用vue时并没有关注到,事实上,vue执行的DOM更新是异步的. 举个栗子: <template> <div class=& ...
- iOS 简单socket连接
- (void)CreateSocket{ NSString *host = [self.realStreamDict objectForKey:@"StreamSeverIP"] ...