求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 例...