This is my blog Ansary's blog.|

Ansary

园龄:3年11个月粉丝:0关注:9

Atcoder ABC230 C

C - X drawing

题意

有n x n个点,输入坐标 a,b,将满足一下条件的坐标涂黑

条件:
1、max(1 - a, 1 - b) <= k <= min(n - a, n - b)
2、max(1 - a, b - n) <= k <= min(n - a, b - 1)

涂黑的部分
1、(a + k, B + K)
2、(a + k, b - k)

接着输入p,q,r,s,表示输出的范围

题解

根据这两个数学公式可以推出两条斜率为1的直线与p,q,s,r围成的正方体中,其他的位置都不需要考虑,一道纯数学题,数学公式推导过程详见大佬的blog,可以推出当 i + j == a + b || i - j == a - b 时,输出'#',否则输出'.'

代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

#define ll long long 

int main(){
	ll a, b ,n;
	ll p, q, r, s;
	cin >> n >> a >> b;
	cin >> p >> q >> r >> s;
	for(ll i = p; i <= q; i++){
		for(ll j = r; j <= s; j++){
			if((i - j) == (a - b) || (i + j) == (a + b))
				cout << '#';
			else
				cout << '.';
		}
		cout << endl;
	}
}

本文作者:Ansary

本文链接:https://www.cnblogs.com/Ansary/p/15820272.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ansary  阅读(44)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起