POJ 3243 Clever Y BSGS
来源:互联网 发布:2017钓鱼网站源码 编辑:程序博客网 时间:2024/06/05 19:35
Clever Y
Time Limit: 5000MS Memory Limit: 65536KTotal Submissions: 6861 Accepted: 1676
Description
Little Y finds there is a very interesting formula in mathematics:
XY mod Z = K
Given X, Y, Z, we all know how to figure out K fast. However, given X, Z, K, could you figure out Y fast?
Input
Input data consists of no more than 20 test cases. For each test case, there would be only one line containing 3 integers X, Z, K (0 ≤ X, Z, K ≤ 109).
Input file ends with 3 zeros separated by spaces.
Input file ends with 3 zeros separated by spaces.
Output
For each test case output one line. Write "No Solution" (without quotes) if you cannot find a feasible Y (0 ≤ Y < Z). Otherwise output the minimum Y you find.
Sample Input
5 58 332 4 30 0 0
Sample Output
9No Solution
Source
POJ Monthly--2007.07.08, Guo, Huayang
/* ***********************************************Author :CKbossCreated Time :2015年03月31日 星期二 20时02分38秒File Name :POJ3243.cpp************************************************ */#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <cmath>#include <cstdlib>#include <vector>#include <queue>#include <set>#include <map>using namespace std;typedef long long int LL;const int MOD=76543;int hs[MOD],head[MOD],next[MOD],id[MOD],top;void insert(int x,int y){int k=x%MOD;hs[top]=x; id[top]=y;next[top]=head[k]; head[k]=top++;}int find(int x){int k=x%MOD;for(int i=head[k];~i;i=next[i])if(hs[i]==x) return id[i];return -1;}int BSGS(int a,int b,int n){memset(head,-1,sizeof(head));top=1;if(b==1) return 0;int m=sqrt(n*1.0),j;LL x=1,p=1;for(int i=0;i<m;i++,p=p*a%n) insert(p*b%n,i);for(LL i=m;;i+=m){if((j=find(x=x*p%n))!=-1) return i-j;if(i>n) break;}return -1;}int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout);int a,b,n;while(scanf("%d%d%d",&a,&n,&b)!=EOF){if(a==0&&b==0&&n==0) break;int ans=BSGS(a,b,n);if(ans==-1) puts("No Solution");else printf("%d\n",ans);} return 0;}
1 0
- POJ 3243 Clever Y BSGS
- POJ 3243:Clever Y BSGS
- 【EXT-BSGS算法求离散对数】POJ Clever Y 3243
- POJ 3243 Clever Y BSGS 算法 (模板)
- POJ 3243 Clever Y
- poj 3243 Clever Y
- POJ 3243 Clever Y(扩展BSGS,gcd(a,p)!=1)
- poj3243:Clever Y(BSGS)
- poj3243 Clever Y【BSGS模板】
- BZOJ_P1467/POJ_P3243 Clever Y(扩展BSGS+哈希)
- [BZOJ1467]Pku3243 clever Y(扩展BSGS)
- [BZOJ 1467]Pku3243 clever Y:扩展BSGS
- bzoj 1467: Pku3243 clever Y (扩展BSGS)
- 【bzoj 1467】Pku3243 clever Y(扩展BSGS)
- 【BSGS】POJ2417[Discrete Logging]&POJ3243[Clever Y]题解
- POJ 3243 Clever Y 解高次同余方程
- poj 3243 Clever Y&&hdu 2815 Mod Tree(扩展baby_step)
- POJ 3243 Clever Y Extended-Baby-Step-Giant-Step
- 17、实现一个简单的ArrayList类,以及静态嵌套类实现迭代器
- 第三周项目一(1)
- Java实现创建哈夫曼树
- 【HNOI2010】【BZOJ2001】City 城市建设2015.4.9编辑修改
- AOJ 0009 Prime Number (埃氏筛法)
- POJ 3243 Clever Y BSGS
- House Robber
- 【解题报告】【浙大PAT】03-树1. List Leaves (25)
- Android开发RadioButton(app主界面点击效果)
- spring错误解决方法整理(持续更新)
- 三月起步的英语
- 将博客搬至CSDN
- poj 1236 Network of Schools (强联通分量+缩点)
- 我的java学习笔记(14)关于反射(part 3)