蒟蒻题解求改(违规紫衫)
  • 板块灌水区
  • 楼主_Qingyu1123_
  • 当前回复3
  • 已保存回复4
  • 发布时间2025/1/11 22:14
  • 上次更新2025/1/12 12:02:25
查看原帖
蒟蒻题解求改(违规紫衫)
1382412
_Qingyu1123_楼主2025/1/11 22:14

rt

专栏文章审核结果
01-11 21:47

很遗憾,您的《【题解】UVA10161 Ant on a Chessboard》不符合推荐标准。原因是:【中文】与【英文、数字或公式】之间应以半角空格隔开;【中文标点符号】与【英文、数字、公式或汉字】或【汉字】与【汉字】之间不应添加多余空格。。

题解

不明白什么是

【中文】与【英文、数字或公式】之间应以半角空格隔开;【中文标点符号】

源码

## 【题解】UVA10161 Ant on a Chessboard
## 题目意思
有一只蚂蚁从原点 $(1,1)$ 出发,先向上方移动一格,然后再向下走一个格子,之后,它再向右走一个格子,然后向上走两个格子,再向左走两个格子。总而言之,它行走的路径就是像蛇一样。
## 思路
首先这是一道**找规律**题,其实就和**蛇形矩阵**差不多,画了一个图,发现对角线上的数字的公差是等差数列,公式为 $a_n=n \times (n-1)+1$。

[![pechy5q.png](https://s21.ax1x.com/2025/01/09/pEChy5Q.png)](https://imgse.com/i/pEChy5Q)

所以先要给的 $n$ 开平方并向上取整,判断 $n$ 为奇数还是偶数。

这个蛇形矩阵有以下规律:

- 奇数行与列:
>
> 行: 从左到右到此行对角线上的数字依次递减。
>
> 列: 从对角线上数字开始从上到下依次递减。


- 偶数行与列:
>
> 行: 从左到右到此行对角线上的数字依次递增。
>
> 列: 从对角线上数字开始从上到下依次递增。

## AC代码
```cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n&&n)
    {
        int d=sqrt(n);
        if((d*d)!=n)
            d++;
          //等价于向上取整
        int x=d*(d-1)+1;
          //x为对角线上的数字
        if(d%2!=0)
        //奇数  行:left->right top->bottom 递减
        {
            if(n>=x)
                cout<<d-(n-x)<<" "<<d<<endl;
            else
                cout<<d<<" "<<d-(x-n)<<endl;
        }
        else
       //偶数  行:left->right top->bottom 递增
        { 
            if(n<=x)
                cout<<d-(x-n)<<" "<<dia<<endl;
            else
                cout<<d<<" "<<d-(n-x)<<endl;
        }
 return 0;
}

[ac记录。](https://www.luogu.com.cn/record/197551485)
2025/1/11 22:14
加载中...