description
定義現給出n,m,p,求
input
第一行為一整數t表示用例組數,每組用例佔一行包括三個整數n,m,p
(t<=100,1<=n,m,p<=10^7)
output
對於每組用例,輸出ans
sample input
1 2 6
1 100 9
sample output
4 7
solution
首先求k,需要用到尤拉函式的兩個性質:
1.若(n,m)=1,則有
2.若m是素數且m|n,則有
由這兩個性質有:
記solve(n,m)=
當n=1時,solve(1,m)=
當m=1時,solve(n,1)=
當m=0時,solve(n,0)=0;
這個遞迴求解最多遞迴n的素因子個數層,故可以在至多o(log n)的複雜度內求出k,下面來求ans
此處引入乙個由尤拉定理衍生出的乙個指數迴圈節定理
每次往上冪一層模數就取一次尤拉函式值,由於乙個數的尤拉函式值一定小於自身,所以至多經過o(log p)次操作模數就變成了1,那麼上面的冪就沒有意義了,無限冪就變成了有限冪
code
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
#define maxn 11111111
#define mod 1000000007ll
int euler[maxn],prime[maxn],sum[maxn],res;
void get_euler()
for(int j=0;jif(i%prime[j])
euler[prime[j]*i]=euler[i]*(prime[j]-1);
else
}sum[i]=(sum[i-1]+euler[i])%mod;
}}int solve(int n,int m)
ll mod_pow(ll a,ll b,int p)
return ans;
}int deal(int k,int p)
int main()
return
0;}
2016多校聯賽 hdu 5728 PowMod
題意就是題目上的圖的那個樣子。給定的n是乙個n is a square free number.他是乙個無平方因子數。也就是說他分解質因子後質因子的指數是1.解決這個題分兩步,先說第二步,第二步是 bzoj 3884原題,只是在這個題我們需要算底數是多少而已。引用一下別人的證明 本人巨菜 考慮尤拉定...
hdu 1066 數論 遞迴
hdu 1066 last non zero digit in n 起首引用下leemars的呈報 因為 2 n 是以4為輪迴節的 並且table n 是以10為輪迴節的 所以從10開端 f n 5 table n的尾數 6 f n n 10 2 n 5 mod 4 右邊的式子除了f n 5 外 是...
HDU1215 數論解法
題意 給出乙個正整數n,求出不包含它本身的所有因子的和 思路 運用算術基本定理對這個這個整數進行拆分 整數約數和公式即,sum 1 p1 p1 2 p1 a1 1 p2 p2 2 p2 a2 1 pk pk 2 pk ak 注 該公式計算結果包含整數本身 include include includ...