????????????
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了????????????相关的知识,希望对你有一定的参考价值。
?????????out namespace pow ?????? lap power ???????????? ... ?????????
?????????????????????????????????????????????????????????????????????
??????p???????????????gcd(a,p)=1,??????a(p-1)≡1(mod p)?????????a????????????p???????????????a???p???????????????????????????????????????1????????????a??????p-1)????????????p??????????????????1.a^(p-1)%p=1?????????%?????????????????????a<p,p????????????
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<ctime> #define ll long long int//??????????????????long long using namespace std; ll n; ll pd[14]= {10,35,77,535,71497,2,3,5,7,11,3161}; ll fastmul(ll a,ll b) { ll r=0; ll base=a; while(b!=0) { if(b%2!=0) { b--; r=(r+base)%n; } b=b/2; base=(base+base)%n; } return r%n; } ll fastpow(ll a,ll b) { ll r=1; ll base=a; while(b!=0) { if(b%2!=0) r=fastmul(r,base)%n; base=fastmul(base,base)%n; b=b/2; } return r%n; } ll check(ll n) { if(n==2) return 1; if(n<2&&(n%2==0)) return 0; for(ll i=0; i<11; i++) { ll x=pd[i];//???????????? if(x%n==0) continue;//?????????????????????????????????????????? ll ans=fastpow(x,n-1)%n; if(ans!=1) return 0; } return 1; } int main() { //srand(time(0)); //scanf("%lld",&n); cin>>n; for(int i=1; i<=n; i++) { if(check(i)) printf("%d ",i); } return 0; }
??????????????????????????????????????????????????????????????????????????????????????????????????????
1.?????????????????????a,b,??????b>0,????????????g???r??????a=bq+r???
????????????????????????????????????????????????(a,b)=(b,r);
#include<iostream> using namespace std; int main() { int n,m,r; cin>>m>>n; r=m%n; while(r!=0) m=n,n=r,r=m%n; cout<<n; }
2.????????????????????????
??????a???b????????????????????????0?????????????????????????????????x???y?????????ax+by=(a,b);
???(a,b)=1(??????)?????????ax+by=1;
???????????????????????????ax+by=c????????????????????????(a,b)|c???(|??????????????????);
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; long long exgcd(long long a,long long b,long long &x,long long &y) { if(b==0) { x=1; y=0; return a; } long long r=exgcd(b,a%b,x,y),t=x; x=y; y=t-y*(a/b); return r; } int main() { long long a1,b1,x1,y1; cin>>a1>>b1; exgcd(a1,b1,x1,y1); while(x1<0) x1+=b1; cout<<x1; return 0; }
?????????
1??????????????????ax+by=c
d=exgcd(a,b,x,y);
If(c%d==0)????????????????????????
x=c/d*x,y=c/d*y;
???x,y????????????????????????,???|x|+|y|???????????????
??????????????????x+k*b,y-k*a???
2????????????????????????
ax≡b(mod n)
????????????????????????ax-ny=b
3??????????????????
??????????????????????????????ax≡1(mod n).
????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????
int PowerMod(int a, int b, int c) { int ans = 1; a = a % c; while(b>0) { if(b % 2 = = 1) ans = (ans * a) % c; b = b/2; a = (a * a) % c; } return ans; }
????????????O(logb).
??????????????????????????????????????????????????????????????????
?????????????????????????????????p???????????????( p -1 )! ≡ -1 ( mod p )
??????????????????
??????“p”?????????????????????????????????????????????????????????1, 2, 3, 4, … ,p− 1 ????????????gcd((p− 1)!,p) > 1??????????????????????????????(p− 1)! ≡ −1 (mod p)???
??????????????????
?????????A={1,2,3,...,p-1};?????????i??????A,?????????j??????A,?????????(ij)?????????1(mod p)
???x*a ≡ 1 (mod p)???
??????x=a??????a*a≡1 (mod p)???
(a+1)*(a-1)≡ 0 (mod p),
a=1???a=p-1 ???????????????
????????????????????????????????????a???
?????????p-1??????≡1*???p-1??????mod p???≡-1 (mod p)
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; long long int f(int p) { if(p==0) return 1; else return p*f(p-1); } int main() { int n; scanf("%d",&n); long long int ans=f(n-1); if(ans%n==n-1) printf("YES"); else printf("NO"); return 0; }
?????????????????????????????????????????????????????????????????????????????????????????????????????????
1.????????????????????????????????????????????????????????? mod p??????,?????????????????????????????????:
??????ax≡1 (mod p),???gcd(a,p)=1???a???p??????????????????a?????????p??????????????????x???
??????????????????
????????????a???b??????????????????????????????????????????a???b?????????????????????????????????????????????x???y???????????????????????????????????????????????????????????????
???ax + by = gcd(a, b)???
?????????????????????????????????????????????????????????????????????ax≡1 (mod p) ????????????????????????????????? a????????????x??????p??????1?????? a%p*x%p=res,
res%p=1;????????????????????????????????????????????????- -????????????????????????
???????????????????????????????????????????????????
?????????????????? ap-1≡1 , ????????? a*ap-2≡1(mod p)???????????????????????????:???a,p??????,??????a*ap-2≡1(mod p)???a*x≡1(mod p),???
x=ap-2(mod p),??????????????????????????????
???????????????????????????????????????????????????
???????????????????????????????????????12%5=12-5*2=2???18%4=18-4*4=2??????/???????????????????????????
??????ax≡1 (mod p)???ax-yp=1.???y??????+???????????????ax+py=1?????????????????????????????????p??????b??????ax+by=1????????????x???a??????b???????????????
y???b??????a????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????1e9+7??????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????mod??????????????????????????????????????????????????????
????????????a,??????????????????a???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????
#include<bits/stdc++.h> using namespace std; typedef long long ll; void exgcd(ll a,ll b,ll& d,ll& x,ll& y) { if(!b) d = a,x = 1,y = 0; else { exgcd(b, a%b, d, y, x); y -= x*(a/b); } } ll inv(ll a, ll p) { ll d, x, y; exgcd(a, p, d, x, y); return d == 1 ? (x+p)%p : -1; } int main() { ll a,p; while(1) { scanf("%lld %lld",&a,&p); printf("%lld ",inv(a,p)); } }
????????????????????????????????????????????????????????????
???????????????2????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
#include<cstdio> #include<cmath> int main() { int a,b,n=0,tmp; scanf("%d %d",&a,&b); while(!(a%2)&&!(b%2)) a=a/2,b=b/2,n++; while(a!=b) { if(a>b) a=a-b; else b=b-a; } if(n==0) printf("%d ",a); else printf("%d ",2*n*a); return 0; }
?????????????????????????????????
以上是关于????????????的主要内容,如果未能解决你的问题,请参考以下文章