題目
題意:給定乙個序列a
ia_i
ai和x,現要切分每個序列,如果當前數q
qq能整除x,則往序列新增x個q/x
q/xq/
x,接著繼續往後處理下乙個數,重複這個過程,直到遇到數q
qq不能整除x。問最後新序列的數的總和。
題解:觀察該過程,發現新增新數,本質上累加的是原始元素的權值。首先查詢這n個數裡邊,被x整除的最小冪次,遇到該數說明不能繼續切分了,會終止程式;確定了最小冪次,則每個數的貢獻次數就可知了,再基於此判斷哪些數有額外的一次貢獻,計算進去即可。
#include
using
namespace std;
#define ll long long
const
int maxn =
200010
;int n, x;
int a[maxn]
;int h[maxn]
;int
cal(
int val)
return num;
}int
main()
else}
ans +
= sum *
(mn +1)
;for
(int i =
0; i < n;
++i)
printf
("%lld\n"
, ans);}
}
簡單數論初步
定義 設 a,b in mathbb 且 b neq 0 如果存在 q in mathbb 使得 a bq 則 b 整除a,記作 b mid a 此時 b 為 a 的因數,a 叫做 b 的倍數.性質1 如果a mid b 且 b mid c 那麼 c mid a 證明 設an b,bm c n,m ...
簡單數論 質數
在 1 的整數中,如果只包含1和本身兩個約數,這個數就被稱為質數 素數。質數的判定 試除法 暴力列舉 o n bool is prime int n 簡單優化 o sqrt 對任意的d能整除n d n 顯然n除上d也能整除n frac n 如n 12,3是12的約數,4也是12的約數 2是12的約數...
簡單數論定理
pi x 來表示小於乙個正實數 x 的素數個數 pi x frac x rightarrow infty 任何乙個大於1的自然數 n 都可以唯一分解成有限個質數的乘積 n p 1 p 2 p k 這裡 p i 均為質數,其諸指數 a i 是正整數。將 n 分解質因數得 n p 1 p 2 p k 則...