矩形並(2020強智杯)

2022-05-14 23:10:26 字數 1500 閱讀 9162

bobo 有乙個矩形a。舉行的左下角座標是 (x1, y1),右上角座標是 (x2, y2)。設 r(i, j) 是左下角座標是 (0, 0),右上角座標是 (i, j) 的矩形,area(i, j) 是矩形 a 和矩形 r(i, j) 的並的面積。
給出 a 和 b,求:

∑i=1a​∑j=1b​area(i,j)除以 (109 + 7) 的餘數。

輸入檔案包含多組資料,請處理到檔案結束。

每組資料的第一行包含兩個整數 a 和 b,第二行包含四個整數 x1, x2, y1, y2.

· 1 ≤ a, b, x1, x2, y1, y2 ≤ 109· x1

< x2 , y1 · 資料組數不超過 104

對於每組資料,輸出乙個整數,表示所求的值。

輸入:

1 12 3 2 3

10 10

1 5 1 5

1000000000 1000000000

1 1000000000 1 1000000000輸出:

23725

2793

1,先不論題目,本題有乙個要求結果 「(109 + 7) 的餘數」。

因為如果mod簡單的數理論上會增大演算法錯誤但是由於巧合恰好模出相等的數,而ac的概率

而1e9+7這個數是素數,相加不爆int,相乘不爆ll。

所以由於在運算過程中說有數都可能爆ll所以在相加相乘的時候要隨時餘mod!

2,在算數運算子的左側如果運算數num都是int型別而運算子右側都是long long型時,運算子右側運算數 num 需要* 1ll

*1ll是為了在計算時,把int型別的變數轉化為long long,然後再賦值給long long型別的變數

例如,long long ans = 0;anslong long型別的,

ans += num * 1ll * (num - 1) / 2;

不至於後面計算溢位,* 1ll之後型別就轉換為long long, num變數是定義為int型別的。

3.在寫題時,看到階乘符號,首先想到的是使用while把結果累加。

而實際上可以直接使用數列求和公式直接把結果算出來,從而降低時間複雜度。

#includetypedef 

long

long

ll;const ll mod = 1e9 + 7

;ll all(ll xx, ll yy)

intmain()

if (y2 }

}printf(

"%lld\n

", ans);

}return0;

}

2019湖南「強智杯」省賽A題

bobo 寫了乙個 n 行 m 列的矩陣 ai,j.首先,他把所有元素 ai,j 1 i n,1 j m 設為 0.然後,他選了 4 個整數 x1,x2,y1,y2 滿足 1 x1 x2 n,1 y1 y2 m,並把滿足 x1 i x2,y1 j y2 的元素 ai,j 設為 1.給出 n 行 m ...

2020強網杯Siri題wp

漏洞點在sub 1212函式,printf s 造成格式化漏洞 思路是先通過格式化漏洞列印出程式基址和libc基址,然後修改free hook為onegadget,再列印大量資料即可 最終的exp如下 coding utf8 from pwn import context.log level deb...

藍橋杯 矩形區域的交和並 計算幾何

在編寫圖形介面軟體的時候,經常會遇到處理兩個矩形的關係。如圖 1.jpg 所示,矩形的交集指的是 兩個矩形重疊區的矩形,當然也可能不存在 參看 2.jpg 兩個矩形的並集指的是 能包含這兩個矩形的最小矩形,它一定是存在的。本題目的要求就是 由使用者輸入兩個矩形的座標,程式輸出它們的交集和並集矩形。矩...