快速乘法
題目意思:
判斷直線x+y=q與座標軸圍成的三角形「內」的整數點的個數 很容易推出公式 (q-1)*(q-2)/2
本題要點:
1、 long long的範圍, q 是素數, q - 1 是偶數(q > 2). 用 (q - 1) / 2。 記 x = (q - 1) / 2, y = q - 2;
2、 用 快速乘法計算 mod p 的乘積, 類似於快速冪。
#include
#include
#include
using
namespace std;
int t;
long
long q, p;
long
long
quick_multi
(long
long a,
long
long b)
return ans;
}int
main()
long
long x =
(q -1)
/2, y = q -2;
x %= p, y %
= p;
printf
("%lld\n"
,quick_multi
(x, y));
}return0;
}/*12 107
*//*
0*/
P5666 樹的重心題解
很容易打出乙個 o n 列舉邊 再 o n 求重心 的 o n 2 的演算法 期望得分 40 points 其實分析鏈和完美二叉樹可以與暴力一共拿到75分 正解 整體複雜度 o n log n 給出結論 結論 一棵以 x 為根的樹的重心,一定在 x 的重兒子所構成的集合中,而所有重兒子就構成了一條重...
HOJ刷題筆記
首次看題真的一臉懵逼,什麼鬼,這是要我們幹嘛。然後我們看到題目的輸入與輸出就會發現就是先規定乙個固定大小的收納字串的空間,然後再將出現最多的字串輸出就好了。弄懂了題目就會發現這道題目很簡單了。直接暴力求解,將字串轉換為乙個乙個數字元素,然後再對其進行計數,最後將最大數對應的字串輸出,然後有一種特殊情...
洛谷 P5666 樹的重心
關於樹的重心有一條性質,假如 u 不是重心,那麼重心一定在 u 的size最大的子樹中.利用這個性質我們可以利用倍增的思想快速找到重心.即維護 jump u,i 表示從 u 出發,向重兒子走 2 i 步所到達的節點.由於要對於每條邊統計,所以用換根dp的思想,在dfs的時候維護以當前節點為根時的 j...