題目傳送
題意:
思路:肯定是唯一分解,然後就是自己推公式了
公式:那麼這個怎麼快速的求得呢?
我們看到,這是個等比數列求和的乘積
等比數列求和的公式是:
n為第n項,我們可以利用逆元來快速求解
但是現在還有乙個問題每當逆元不存在的時候,怎麼辦?
也就是說當p-1是 模數的倍數的時候,怎麼求呢?首先有公式:
但是沒有什麼用,我們可以觀察到,當p-1是mod的倍數的時候,那麼p%mod也就是1
那麼直接帶入計算的式子中有以下推論:
最後乙個坑點,因為要取模,後面又要-1,可能為負數。。。。。
題很不錯
ac**
#include
inline
long
long
read()
while
(c >=
'0'&& c <=
'9')
return x*s;
}using
namespace std;
#define newnode (treenode *)malloc(sizeof(treenode))
#define mem(a,b) memset(a,b,sizeof(a))
#define lowbit(x) (x)&(-x)
const
int n =
2e5+10;
const
long
long infinf =
0x7f7f7f7f7f7f7f
;const
int inf =
0x3f3f3f3f
;const
double eps =
1e-5
;const
int mod =
1e9+7;
const
double ii =
acos(-
1);const
double pp =
(ii*
1.0)/(
180.00);
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef pair<
int,
int> pii;
typedef pair piil;
ll arr[
100005][
2],m;ll qucik_pow
(ll a,ll b,ll p)
return ans;
}ll solve
(ll a,ll b,ll p)
else
}signed
main()
for(
int i =
2;i * i <= a;i++
) arr[m][1
]*= b;
m++;}
}if(a >1)
for(
int i =
0;i < m;i++
) cout << sum << endl;
}
洛谷 1593 因子和 組合數學
題目傳送門 好像這題並不是組合數學啊 只是乙個套公式的題目罷了。乙個正整數 n 有素因子分解 p a11 pa22 p amm,則有以下兩個定理 1.n 的因子和 pa1 11 1p1 1 pa 2 12 1p2 1 pam 1m 1pm 1 i 1mp ai 1 i 1p i 1 2.n的因 子個...
因子和因子個數
所有因子個數 n 與所有因子的和 n 都是乘 積 性函式。定義1 因子和函式 定義為整數n的所有正因子之和,記為 n 定義2 因子個數函式 定義為正整數n的所有正因子個數,記為 n 定理1 設p是乙個素數,a是乙個正整數,那麼 n 1 p p 2 p a p a 1 1 p 1 n a 1 定理2 ...
洛谷2068 統計和
給定乙個長度為n n 100000 初始值都為0的序列,x x 10000 次的修改某些位置上的數字,每次加上乙個數,然後提出y y 10000 個問題,求每段區間的和。時間限制1秒。輸入格式 第一行1個數,表示序列的長度n 第二行1個數,表示操作的次數w 後面依次是w行,分別表示加入和詢問操作 其...