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算 ...
 
随机推荐
- 多线程进阶---Thread.join()/CountDownLatch.await() /CyclicBarrier.await()
			
Thread.join() CountDownLatch.await() CyclicBarrier.await() 三者都是用来控制程序的"流动" 可以让程序"堵塞&q ...
 - 大数据 - Teradata学习体会
			
引言 随着计算机系统在处理能力.存储能力等方面,特别是计算机软件技术的不断提高,使得信息处理技术得到飞速发展. 数据处理主要分为两大类:联机事物处理OLTP.联机分析处理OLAP.OLTP也就是传统的 ...
 - TComboBox组件重要属性和事件
			
TComboBox组件的重要属性 CharCase--------此属性用于设置编辑框内文字的大小写 DropDownCount---此属性用于设置当用户下拉组合框时不需要加滚动条就能显示的项的个数 ...
 - C语言编程练习(一)
			
问题一: 问题描述:输入n个数,n<=100,找到其中最小的数和最大的数 输入样例: 4 1 2 3 4 输出样例:14 #include " ...
 - bzoj3156 防御准备 - 斜率优化
			
Input 第一行为一个整数N表示战线的总长度. 第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai. Output 共一个整数,表示最小的战线花费值. Sample Input 102 3 ...
 - PE文件格式详解,第二讲,NT头文件格式,以及文件头格式
			
PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...
 - jQuery实现web页面固定列表搜索
			
1.需求分析:现在有一个数据展示列表页面,列表内容固定,使用jQuery在固定的列表中实现搜索功能. 2.核心代码: <!-- 添加jquery库 --> <script type= ...
 - Cmder 软件中修改λ符号方法
			
以前的版本 网上都有,我就不介绍了, 只介绍现在的 1. 打开Cmder软件安装位置 2. 打开vendor文件夹 profile.ps1文件 3. 找到第77行 Write-Host " ...
 - ZOJ 2042 Divisibility (DP)
			
Divisibility Time Limit: 2 Seconds Memory Limit:65536 KB Consider an arbitrary sequence of inte ...
 - Java面向对象  包
			
 Java面向对象 包 知识概要: (1)包的概念 (2)包的命名 (3)编译执行 (4)导入 (5)包的访问权限 包: 包(package)用于将完成不同功能 ...