题目解析:
这题其实就是一个二维矩阵,给你一个编号,让你输出这个编号所在的位置
使用算法:
这题的范围:n,m,k.( 1<=n,m<=10000 , 1<=k<=2 * n* m )
所以这道题不能用二维数组直接来模拟,我自己在做的时候又想到了STL中的vector,
但又觉的太麻烦,所以就想了一个简便一点的方法:不模拟出一个二维矩阵,直接查找编号
其核心就是三重循环
代码实现:
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        for(int t=1;t<=2;t++)
        {
            cnt++;
            if(cnt==k)
            {
                quick_out(i);
                putchar(' ');
                quick_out(j);
                putchar(' ');
                if(t==1) putchar('L');
                else putchar('R');
                putchar('\n');
                return 0;
            }
        }
    }
}接着就是整段代码了
(我知道泥萌就要看这个)
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    int cnt=0;  //一个计数器
    for(int i=1;i<=n;i++)      //第一重循环,模拟行
    {
        for(int j=1;j<=m;j++)   //第二重,模拟列
        {
            for(int t=1;t<=2;t++)   //第三重,模拟出每列的左右两边
            {
                cnt++;
                if(cnt==k)  //如果计数器的编号等于要找的编号,输出
                {
                    cout<<i<<" "<<j<<" ";   //输出横坐标和纵坐标
                    if(t==1) cout<<'L';  //输出是左还是右
                    else cout<<'R';
                    putchar('\n');  //换行
                    return 0;   //结束,return 0
                }
            }
        }
    }
    return 0;
} 
                        
                        