1. 程式人生 > 其它 >安裝.net4.8提示已處理證書鏈,但不在受信任什麼

安裝.net4.8提示已處理證書鏈,但不在受信任什麼

 

 

 

 對於b很大這種情況,請使用尤拉降冪

首先介紹一下尤拉函式(此處用到一些網路資料)

同餘符號
含義
兩個整數a,b,若它們除以整數m所得的餘數相等,則稱a,b對於模m同餘
記作a≡b(mod m)
讀作a同餘於b模m,或讀作a與b關於模m同餘。
比如26≡14(mod 12)。

 

ll ol(ll n)
{
    int rea=n;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            rea=rea-rea/i;
            while(n%i==0)
            n
/=i; } } if(n>1) rea=rea-rea/n; return rea; } int main() { ll a,b,c; cin>>a; cout<<ol(a)<<endl; }

可得知該數範圍內與這個數互質數的個數

尤拉降冪公式

 

 由於我太弱這裡不做證明

 

 上解題程式碼

 

#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include<iostream>
#include
<cstdio> #include<cstring> #include<queue> #include<algorithm> #include<map> #include<cmath> typedef long long ll; using namespace std; bool note; ll ol(ll n) { ll rea=n; for(ll i=2;i*i<=n;i++) { if(n%i==0) { rea=rea*(i-1)/i;
while(n%i==0) n/=i; } } if(n>1) rea=rea*(n-1)/n; return rea; } ll jc(string bb,ll mod) { ll ans=0; for(ll i=0;i<bb.size();i++) { ans=ans*10+(bb[i]-'0'); if(ans>=mod) { ans%=mod;note=1; } } return ans; } ll km(ll a,ll b,ll c) { ll res=1; while(b) { if(b&1) res=(res*a)%c; a=(a*a)%c; b>>=1; } return res; } int main() { int sum;cin>>sum; while(sum--) { note=0; ll a,c; string b; cin>>a>>b>>c; ll cmod=ol(c); ll bb=jc(b,cmod); if(__gcd(a,c)!=1&&note) bb+=cmod; cout<<km(a,bb,c)<<endl; } return 0; }

等我啥時候懂了再來補降冪證明(