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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步