2020牛客寒假演算法基礎集訓營1

2021-10-02 14:44:18 字數 1880 閱讀 5917

a honoka和格點三角形

honoka最近在研究三角形計數問題。

她認為,滿足以下三個條件的三角形是「好三角形」。

1.三角形的三個頂點均為格點,即橫座標和縱座標均為整數。

2.三角形的面積為1 。

3.三角形至少有一條邊和 x軸或y 軸平行。

honoka想知道,在平面中選取乙個大小為 的矩形格點陣,可以找到多少個不同的「好三角形」?由於答案可能過大,請對1e9+7 取模。

兩個正整數n和m(2 ≤n,m≤109)( 2\ ≤n,m≤10^9)(2 ≤n,m≤109)
面積為1的格點三角形的數量,對 109+7 取模的結果。
示例1

2 3
6
格點如下:
不妨設左下角座標為(1,1),右上角座標為到(3,2)。

那麼三點座標可選:

(1,1)(1,2)(3,1)

(1,1)(1,2)(3,2)

(1,1)(2,2)(3,1)

(1,1)(3,1)(3,2)

(1,2)(2,1)(3,2)

(1,2)(3,1)(3,2)

所以共有6個。

示例2

100 100
7683984
這裡太小寫不下啦。
這一題是算是找規律的題,也可以說是通過暴力的方法找尋規律,根據兩種方法進行找尋規律,第一種三角形就是直角三角形,也就是兩邊分別跟x軸y軸平行的三角形,然後這種三角形的個數為4*(n-1)*(m-2)+4*(n-2)*(m-1),另一種三角形就是兩邊不平行的三角形;

ac**如下

#include using namespace std;

long long sum=0,n,m;

long long mod=1e9+7;

int main()

dhanayo和公尺飯

打卡題,兩次排序比較輸出就好了

**如下

#include using namespace std;

int a[100000+10],b[100000+10];

int main()

sort(a+1,a+n);

for(int i=1;i<=n;i++)

s=s*(a+1);

}if(n>1)

s=s*2;

return s;

}int main()

cout<geli和字串

開乙個26個英文本母的字首和陣列,然後對每乙個字母進行統計,然後要用雙指針對這個陣列進行標記處理,一點一點的雙指標移動動態更新長度就好了

**如下

#includeusing namespace std;

int dp[200010][26]=; //26個字首和陣列

int main();

string ss;

int main()

if(i>=3&&ss[i-3]=='n'&&ss[i-2]=='i'&&ss[i-1]=='c'&&ss[i]=='o')

if(i>=5&&ss[i-5]=='n'&&ss[i-4]=='i'&&ss[i-3]=='c'&&ss[i-2]=='o'&&ss[i-1]=='n'&&ss[i]=='i')

if(i>=9&&ss[i-9]=='n'&&ss[i-8]=='i'&&ss[i-7]=='c'&&ss[i-6]=='o'&&ss[i-5]=='n'&&ss[i-4]=='i'&&ss[i-3]=='c'&&ss[i-2]=='o'&&ss[i-1]=='n'&&ss[i]=='i')

}cout<}

2020牛客寒假演算法基礎集訓營

長期更新,補完為止 2 g 判正誤 題意 t組資料。判斷a d b e c f是否等於g。1e9 a,b,c,g 1e9,0 d,e,f 1e9。保證不會出現指數和底數同為 0 的情況。思路 硬算會tle或mle。快速冪取模,為了增加過題概率,多取幾個模數判斷。includeusing namesp...

2020牛客寒假演算法基礎集訓營1

找規律,推公式 三角形個數為2 m n m n m 1 n 1 2 m n mn m 1 n 1 2 m n mn m 1 n 1 include include include include using namespace std typedef long long ll const int m...

2020牛客寒假演算法基礎集訓營1

h題 突然發現h題可以用好多種方法做的。方法一 雙指標,維護乙個修改次數小於等於k的區間 include using namespace std typedef long long ll const int mod 1e9 7 const int n 1e5 5 const int inf 0x3f...