扩展欧几里得(求逆元)
来源:互联网 发布:欧洲为什么发达 知乎 编辑:程序博客网 时间:2024/06/13 13:32
昨天看了一下逆元,有费马小定理求逆元,扩展费马小定理求逆元,最重要的是有一个扩展欧几里得求逆元,我只是看了一下,并没有做题,今天做了一下,直接给wrong了,我也是没有话可说了,我还是太水。
题目链接:点击打开链接
代码:
#include<stdio.h>#define mod 9973#include<string.h>#include <iostream>using namespace std;int extended_gcd(int a,int b, int &x, int &y){ if (b == 0) { x = 1; y = 0; return a; } else { int gcd = extended_gcd(b, a % b, x, y); int t = x; x = y; y = t - (a / b) * y; return gcd; }}//int main()//{// int i, x, y;// const int P = 13;// for (i = 1; i < P; ++i)// {// extended_gcd(i, P, x, y);// while (x < 0) x += P;// printf("1 div %d = %d\n", i, x);// }// return 0;//}//int main()//{// LL a, b, t;// scanf("%lld",&t);// while(t--)// {// scanf("%lld%lld",&a,&b);// LL ans = cal(a, b, 1);// if(ans == -1)// {// printf("Not Exist\n");// continue;// }// printf("%lld\n",ans);//x// }// return 0;//}//int extgcd(int a,int b,int &x,int &y)//{// int d=a;// if(b!=0)// {// d=extgcd(b,a%b,y,x);// y-=(a/b)*x;//// }// else//// {// x=1;// y=0;// }// return d;//}int sum[100010],q[100010];char w[100010];int main(){ for(int i=1; i<mod; i++) { int x,y; extended_gcd(i, mod, x, y); while (x < 0) x += mod; q[i]=x; } int a; while(~scanf("%d",&a)) { scanf("%s",w); int s=strlen(w); sum[0]=1; for(int i=0; i<s; i++) sum[i+1]=sum[i]*(w[i]-28)%mod; int q1,q2; for(int i=0; i<a; i++) { scanf("%d%d",&q1,&q2); printf("%d\n",sum[q2]*q[sum[q1-1]]%mod); } } return 0;}原来写了一个模板,是扩展欧几里得,后来不知道怎么就错了,我也是不知道怎么回事,那个模板好像是求求解线性方程时候的模板,然后就错了,我还是太水。
0 0
- 扩展欧几里得(求逆元)
- 欧几里得+扩展欧几里得(理解)
- Romantic(扩展欧几里得求逆元(裸题))
- 欧几里得扩展求逆元
- 扩展欧几里得求逆元
- 扩展欧几里得求逆元
- 扩展欧几里得求逆元
- 扩展欧几里得求逆元:
- sgu106(扩展欧几里得)
- 扩展欧几里得(转)
- Line(扩展欧几里得)
- 欧几里得算法(+扩展)
- 扩展欧几里得(poj1061)
- hdu1222(扩展欧几里得)
- Romantic(扩展欧几里得)
- (扩展)欧几里得算法
- 扩展欧几里得(裸)
- 扩展欧几里得(exgcd)
- Spring
- tjut 2822
- C++中数字与字符串之间的转换
- POJ 3974 Palindrome(Manacher)
- 驱动开发用到的派遣函数序号(wdm.h)
- 扩展欧几里得(求逆元)
- cf XOR and Favorite Number
- mob 之 ShareSDK第三方分享
- 12.ATL中实现可连接对象和接收器
- multiple definition of 问题解决方法
- 无限级联树形菜单
- 硬币的表示法
- 字符串:暴力子字符串查找算法
- 构造者模式