UVa 10161 Ant on a Chessboard

#include <iostream>  
#include <cmath>  
  
using namespace std;  
  
int main(int ac, char *av[])  
{  
    int step;  
  
    while (cin >> step, step)  
    {  
        // 确定步数数字所在的列或者行。  
//ceil 返回大于或者等于指定表达式的最小整数 int column = (int)ceil(sqrt(step)); // 确定对角线上的数字:column * (column - 1) + 1。 int diagonal = column * (column - 1) + 1; // 根据对角线数字以及步数数字与对角线数字的关系来确定位置。 if (column & 1) { if (step >= diagonal) cout << (column - (step - diagonal)) << " " << column << endl; else cout << column << " " << (column - (diagonal - step)) << endl; } else { if (step >= diagonal) cout << column << " " << (column - (step - diagonal)) << endl; else cout << (column - (diagonal - step)) << " " << column << endl; } } return 0; }
原文地址:https://www.cnblogs.com/UnGeek/p/2623330.html