數論 二分快速取餘

2021-08-10 23:36:12 字數 744 閱讀 6261

求12345^12345的所有約數(即因子)之和,並對其取模9901再輸出。

key格式:ctf

這裡存在三個有趣的數學定理:

(1)整數唯一分解定理

(2)約數和公式

(3)同餘模公式

#includeusing namespace std;

const int size = 10000;

const int mod = 9901;

long int sum(long int p, long int n);

long int power(long int p, long int n);

int main()

k++;

}///素數刷一遍

if(i == 2)///這麼做是因為除了2以外,素數均為奇數

i++;

else

i += 2;

}if(a != 1)///特殊處理:這個數本身就是質數

long int ans = 1;

for(i = 0; i < k; i++)///普普通通地刷過一遍。。遞迴二分、反覆平方是核心

}return 0;

}long int sum(long int p, long int n)///遞迴二分求等比序列

long int power(long int p, long int n)///反覆平方

return sq;

}

POJ1845 數論 二分快速取餘

大致題意 求a b的所有約數 即因子 之和,並對其取模 9901再輸出。解題思路 應用定理主要有三個 1 整數的唯一分解定理 任意正整數都有且只有一種方式寫出其素因子的乘積表示式。a p1 k1 p2 k2 p3 k3 pn kn 其中pi均為素數 2 約數和公式 對於已經分解的整數a p1 k1 ...

11 1 考試 數論 數論 二分

額,可以直接暴力,或二分,或者像我這麼sb 地分解質因數 因為p是質數,所以a b 1 二分即可 大佬們都用並查集,可是我不會啊 我只會線段樹的解法 複雜度 o nlog 2n 好像比並查集快一點點 哈哈 注意兩種不合法的情況 上面的兩個符合分別是交集,並集的意思 然後二分,直接模擬就好了 incl...

快速冪取餘

應用 快速計算出a的n次方對mod取餘 對於計算a的n次方,暴力的方法時間複雜度是o n 對於n 1e8的情況下已經不能使用了 我們知道a的n次方可以寫成 所以只要想辦法找出b陣列即可 我們考慮到乙個數使用二進位制表示的特點,對於乙個數的二進位制表示為1的位次分別是第i1 i2 i3 ik,則n 例...