close
Content

尼斯湖水怪是一隻住在尼斯湖中神秘且不明的動物。尼斯湖則是北蘇格蘭的印芬尼斯市附近的一個大且深的淡水湖。尼斯怪通常被視為一種湖怪。
http://en.wikipedia.org/wiki/Loch_Ness_Monster

背景

2003 年 7 月,BBC (英國國家廣播電視公司) 曾報導了一項他們對尼斯湖所作的大規模研究,他們用 600 支聲納也沒有辦法在湖中找到任何「水怪」(也就是任何已知或未知的大型動物) 的踪跡。他們推論尼斯怪並不存在。現在我們要重覆這項實驗。

問題

給你一個 n 列 m 行的格子代表尼斯湖,6 ≤ n, m ≤ 10000,找出最少要放幾個聲納才能控制所有的方格,條件如下:

  • 一個聲納佔一格;它的監控範圍為所在的那一格及緊鄰的格子;
  • 邊緣的格子不需要監控,因為尼斯怪太大了,無法蔵在那兒。
例如, 

                 

 其中 X 代表聲納,灰色區域則是它所監控的範圍。最後一個圖則是一組可接受的解答。
Input
輸入的第一行有一個整數,t,代表測試筆數。每筆測資一行,含有兩個由空白分開的數字,6 ≤ n, m ≤ 10000,也就是格子的大小 (n 列 m 行)。
Output
每筆測資輸出一行,顯示符合上述條件的最小數字。
Sample Input #1
3
6 6
7 7
9 13
Sample Output #1
4
4
12

python

"""
這題我看人家的.....
想法一:因為題目說"邊緣的格子不需要監控",所以可以將長、寬都先減2,再把長、寬分別除以3再無條件進位之後的結果相乘就是答案了。
想法二:可利用C++除法無條件捨去的特性,直接把長、寬分別除以3後的結果相乘起來就是答案了。
"""
t=int(input())
for _ in range(t):
  n,m=map(int,input().split())
  n//=3
  m//=3
  print(n*m)

 

 

C++

#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int t;
    double n, m;
    cin >> t;
    while (t--){
        cin >> n >> m;
        cout << (int)ceil((n-2)/3) * (int)ceil((m-2)/3) << endl;
    }
    return 0;
}
/*
控制小數點道第幾位 
#include <inmanip> 
cout  <<  setprecision(3)  << 3.123  <<  endl;

控制無條件進位至整數
#include <cmath>
cout  <<  ceil(數字)   <<  endl;
*/ 
arrow
arrow
    創作者介紹
    創作者 趴趴熊日常 的頭像
    趴趴熊日常

    資工趴趴熊的小天地

    趴趴熊日常 發表在 痞客邦 留言(0) 人氣()