UVA 10161 Ant on a Chessboard
2015-09-09 16:01
204 查看
yiyi : 先看对角线
你会发现对角线中的值和它的行数之间是有关系的,还有就是后面的数是围着1一圈一圈往外扩的。
我们输入N以后,再根据N的值的大小,从对角线上的数开始找,找的过程要跟据行的奇偶,需要分成不同的情况!
题目:
One day, an ant called Alice came to an M*M chessboard. She wanted to go around all the grids. So
she began to walk along the chessboard according to this way: (you can assume that her speed is one
grid per second)
At the rst second, Alice was standing at (1,1). Firstly she went up for a grid, then a grid to the
right, a grid downward. After that, she went a grid to the right, then two grids upward, and then two
grids to the leftin a word, the path was like a snake.
For example, her rst 25 seconds went like this:
( the numbers in the grids stands for the time when she went into the grids)
25 24 23 22 21 5
10 11 12 13 20 4
9 8 7 14 19 3
2 3 6 15 18 2
1 4 5 16 17 1
1 2 3 4 5
At the 8-th second , she was at (2,3), and at 20-th second, she was at (5,4).
Your task is to decide where she was at a given time (you can assume that M is large enough).
Input
Input le will contain several lines, and each line contains a number N (1 N 2 109), which stands
for the time. The le will be ended with a line that contains a number `0'.
Output
For each input situation you should print a line with two numbers (x,y), the column and the row
number, there must be only a space between them.
Sample Input
8
20
25
0
Sample Output
2 3
5 4
1 5
答案:
你会发现对角线中的值和它的行数之间是有关系的,还有就是后面的数是围着1一圈一圈往外扩的。
我们输入N以后,再根据N的值的大小,从对角线上的数开始找,找的过程要跟据行的奇偶,需要分成不同的情况!
题目:
One day, an ant called Alice came to an M*M chessboard. She wanted to go around all the grids. So
she began to walk along the chessboard according to this way: (you can assume that her speed is one
grid per second)
At the rst second, Alice was standing at (1,1). Firstly she went up for a grid, then a grid to the
right, a grid downward. After that, she went a grid to the right, then two grids upward, and then two
grids to the leftin a word, the path was like a snake.
For example, her rst 25 seconds went like this:
( the numbers in the grids stands for the time when she went into the grids)
25 24 23 22 21 5
10 11 12 13 20 4
9 8 7 14 19 3
2 3 6 15 18 2
1 4 5 16 17 1
1 2 3 4 5
At the 8-th second , she was at (2,3), and at 20-th second, she was at (5,4).
Your task is to decide where she was at a given time (you can assume that M is large enough).
Input
Input le will contain several lines, and each line contains a number N (1 N 2 109), which stands
for the time. The le will be ended with a line that contains a number `0'.
Output
For each input situation you should print a line with two numbers (x,y), the column and the row
number, there must be only a space between them.
Sample Input
8
20
25
0
Sample Output
2 3
5 4
1 5
答案:
#include <stdio.h> #include <iostream> using namespace std; int main () { int n, x, y, i, m; while (scanf("%d", &n) != EOF && n) { m = 1; i = 1; do { m = m + 2 * (i - 1); if (m == n) { x = i; y = i; break; } else if (n < m && n >= (m - i + 1)) { if (i % 2 == 0) { x = i - (m - n); y = i; } else { x = i; y = i - (m - n); } break; } else if (n > m && n <= (m + i - 1)) { if (i % 2 == 0) { x = i; y = i - (n - m); } else { x = i - (n - m); y = i ; } break; } i++; } while (1); printf("%d %d\n", x, y); } return 0; }
相关文章推荐
- redis 命令总结
- MySQL学习笔记(1)——启动停止与登录,显示相关信息
- 一个简单的Android木马病毒的分析
- TCP/IP网络编程 基于Linux编程_1 --套接字中标准I/O的使用
- TCP/IP网络编程 基于Linux编程_1 --套接字中标准I/O的使用
- cocos2dx +lua 面向对象
- 学术会议收集
- Android之TextView实现跑马灯的效果(笔记)
- java私有类
- 解析offsetHeight,clientHeight,scrollHeight之间的区别
- 基于MATLAB GUI界面的MCU串口实时绘图设计
- 第二课 循环语句
- Oracle exp备份导入注意的六个事项
- 对LCS算法及其变种的初步研究
- Habit breaking, habit making
- Linux初学——文件属性
- 对LCS算法及其变种的初步研究
- Your content must have a ListView whose id attribute is 'android.R.id.list'z
- Acitivty生命周期
- 为ubuntu与windows搭建桥梁samba ssh xshell