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