「SuperOJ 215」移动机器人

移动机器人

题目描述

在一个平面直角坐标系上,一个机器人处于某格点(X0,Y0)处,格点的横纵坐标均为整数。有一个遥控器可以让机器人实现9种可能的运动方式,它们依次是:
(1)向左走一个单位;
(2)向右走一个单位;
(3)向上走一个单位;
(4)向下走一个单位;
(5)走到格点(X0,Y0)关于X轴的对称点;
(6)走到格点(X0,Y0)关于Y轴的对称点;
(7)走到格点(X0,Y0)关于原点的对称点;
(8)以格点(X0,Y0)与原点的连线为轴,逆时针旋转90度;
(9)以格点(X0,Y0)与原点的连线为轴,顺时针旋转90度;
其中,以横坐标X值增大为向右,纵坐标Y值增大为向上。

现在已知机器人的初始位置(X0,Y0)以及遥控器此次发出指令的编号 i(i为正整数,并且1 \leq i \leq 9),请你求出机器人执行指令后所到的新位置坐标(X,Y)。

输入格式

输入文件中只有一行,是由空格隔开的三个整数 X0,Y0 和正整数 i 。
其中: -100 \leq X0,Y0 \leq 100 ,1 \leq i \leq 9 。

输出格式

输出文件两个空格隔开的整数,表示移动到的新位置坐标 X 和 Y。

样例数据 1

输入

1
5 7 1

输出

1
4 7

样例数据 2

输入

1
5 7 2

输出

1
6 7

分析

简单模拟题…

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;
int x, y, ctrl;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> x >> y >> ctrl;
switch (ctrl) {
case 1: cout << x - 1 << " " << y, exit(0);
case 2: cout << x + 1 << " " << y, exit(0);
case 3: cout << x << " " << y + 1, exit(0);
case 4: cout << x << " " << y - 1, exit(0);
case 5: cout << x << " " << -y, exit(0);
case 6: cout << -x << " " << y, exit(0);
case 7: cout << -x << " " << -y, exit(0);
case 8: cout << -y << " " << x, exit(0);
case 9: cout << y << " " << -x, exit(0);
}
return 0;
}

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×