YTU 3234 矩形的個數 (有問題)

2021-08-15 14:54:58 字數 1381 閱讀 2956

時間限制: 1 sec  記憶體限制: 128 mb

提交: 56  解決: 6

[提交][狀態][討論版]

在乙個3*2的矩形中,可以找到6個1*1的矩形,4個2*1的矩形3個1*2的矩形,2個2*2的矩形,2個3*1的矩形和1個3*2的矩形,總共18個矩形。

給出a,b,計算可以從中找到多少個矩形。

本題有多組輸入資料(<10000),當a,b同時問 0 時 結束

輸入2個整數a,b(1<=a,b<=1000)

輸出找到的矩形數。 

1 2

3 20 0

3

18

很輕易可以發現就是1*1的,1*2的,2*1的,2*2的,3*1的,3*2的。

也就說在a*b的矩陣中可以找到

1*1,1*2,.....,1*b+

2*1,.....,2*b+

.......+

a*1,.....,a*b個小矩陣。

所以直接用兩重迴圈來解決,可是提交時發現超時了...

#include int main()

return 0;

}

於是上網搜了下這個的公式,是這樣的(a+1)*a/2*(b+1)*b/2

其實這個公式也是很好理解的,長肯定是從1到a,寬是從1到b,也已直接用所有長的和乘上所有寬的和。

數學證明:以3*2的矩陣為例

1*1+1*2+1*3+2*1+2*2+2*3=1*(1+2+3)+2(1+2+3)=(1+2)*(1+2+3)=18

注意這樣做法下,在數字很大時,超出了int 的表示範圍,所以用long long型。

但這裡遇到了一些問題,long long 型的輸入輸出我一般用的時%i64d,codeblocks中也不會報錯,但是在oj上測試執行樣例時結果變成了這樣,交了後的錯誤答案也都是前面有許多個空格,如圖所示。

於是換了下輸入輸出用%lld,測試資料倒是沒問題,可是編譯器又會警告。

下面將去查詢相關資料比較%lld和%i64d的區別,還有__int64。反正這道題還是有一組資料就是過不去,我也是沒辦法了,留在以後解決吧。看到這篇文章的可以幫忙看下下面**問題出在哪。

#includeint main()

return 0;

}

矩形的個數

時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 在乙個3 2的矩形中,可以找到6個1 1的矩形,4個2 1的矩形3個1 2的矩形,2個2 2的矩形,2個3 1的矩形和1個3 2的矩形,總共18個矩形。給出a,b,計算可以從中找到多少個矩形。輸入 本題有多組輸入資料 10000...

矩形的個數

時間限制 1000 ms 記憶體限制 65535kb 難度 1 描述 在乙個3 2的矩形中,可以找到6個1 1的矩形,4個2 1的矩形3個1 2的矩形,2個2 2的矩形,2個3 1的矩形和1個3 2的矩形,總共18個矩形。給出a,b,計算可以從中找到多少個矩形。輸入 本題有多組輸入資料 10000 ...

矩形的個數

描述 在乙個3 2的矩形中,可以找到6個1 1的矩形,4個2 1的矩形3個1 2的矩形,2個2 2的矩形,2個3 1的矩形和1個3 2的矩形,總共18個矩形。給出a,b,計算可以從中找到多少個矩形。輸入本題有多組輸入資料 10000 你必須處理到eof為止 輸入2個整數a,b 1 a,b 1000 ...