sdutoj 2373 Black and white painting( 规律统计计算 3Y )
Black and white painting
题目描述
You are visiting the Centre Pompidou which contains a lot of modern paintings. In particular you notice one painting which consists solely of black and white squares, arranged in rows and columns like in a chess board (no two adjacent squares have the same colour). By the way, the artist did not use the tool of problem A to create the painting.
Since you are bored, you wonder how many 8 × 8 chess boards are embedded within this painting. The bottom right corner of a chess board must always be white.
输入
The input contains several test cases. Each test case consists of one line with three integers n, m and c. (8 ≤ n, m ≤ 40000), where n is the number of rows of the painting, and m is the number of columns of the painting. c is always 0 or 1, where 0 indicates that the bottom right corner of the painting is black, and 1 indicates that this corner is white.
The last test case is followed by a line containing three zeros.
输出
For each test case, print the number of chess boards embedded within the given painting.
示例输入
8 8 0 8 8 1 9 9 1 40000 39999 0 0 0 0
示例输出
0 1 2 799700028
代码:
#include <iostream> #include <string> #include <algorithm> #include <stdio.h> #include <string.h> using namespace std; int main() { int n, m, c; long long int ans=0; int i, j; while(scanf("%d %d %d", &n, &m, &c)!=EOF) { if(n==0 && m==0 &&c==0 ) break; ans=0; int flag; if(c==1) // bai flag=1; else flag=0; int dd, ff; for(i=m; i>=8; i--) { if(flag==1) { dd=(n-8)/2+1; ans+=dd; flag=0; } else { ff=n-1; if(ff<8) { dd=0; ans+=dd; flag=1; } else { dd=(ff-8)/2+1; ans+=dd; flag=1; } } } printf("%lld\n", ans ); } return 0; }