1 条题解

  • 0
    @ 2025-8-24 22:32:48

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ImposterAnYu
    I love barbara forever! | q3572195459 wx rzbxs3288,要电话请私信

    搬运于2025-08-24 22:32:47,当前版本为作者最后更新于2021-07-31 21:37:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    理解题意

    这道题就是将一个大小为 r×cr \times c 的由 X. 组成的交叉矩阵(自定义名称)的长变为原来的 aa 倍,宽变为原来的 bb 倍后输出。

    交叉矩阵的定义:一个大小为 3×53 \times 5 的由 sb 组成的交叉矩阵如下:

    sbsbs
    bsbsb
    sbsbs
    

    (默认靠前的那个字符为矩阵的第一个字符!)

    1

    我们可以先把一个大小为 r×cr \times c 的由 X. 组成的交叉矩阵构造出来(设矩阵为 xx)。那么具体要怎么做呢?

    我们可以发现:当 (i+j)mod2=0(i + j) \bmod 2 = 0 时,pi,jp_{i,j}X;否则,pi,jp_{i,j}.

    所以,代码的其中一部分就出来啦!

    for(i = 1; i <= r; i++){
    		for(j = 1; j <= c; j++){
    			x[i][j] = ((i + j) % 2? '.' : 'X');//用三目运算符判断当前位置上是哪个字符。 
    		}
    	}
    

    2

    那怎样得到最后的输出呢?

    对比一下样例 11 中的交叉矩阵:

    X.X.
    .X.X
    

    和最后的输出:

    XX..XX..
    XX..XX..
    ..XX..XX
    ..XX..XX
    

    发现没?其中的 pi×a+x,j×b+yp_{i \times a + x,j \times b + y} 均等于 pi×a,j×bp_{i \times a,j \times b}xx 为任意不大于 rr 的正整数,yy 为任意不大于 cc 的正整数)!

    那么如果 i=i+xi = i + xj=j+yj = j + y 时,原来的 iijj 又等于什么呢?

    i=(i1)÷a+1i = (i - 1) \div a + 1 j=(j1)÷b+1j = (j - 1) \div b + 1

    没毛病吧?

    for(i = 1; i <= r * a; i++){
    		for(j = 1; j <= c * b; j++){
    			cout<< x[(i - 1) / a + 1][(j - 1) / b + 1] ;//核心公式! 
    		}
    		cout<< endl;
    	}
    

    整道题就这么讲完啦!

    3(坑)

    不要输出空格!不要输出空格!绝对不要输出空格!!!

    (不知道为什么,输出空格还能A两个点……)

    AC code

    #include<bits/stdc++.h>
    using namespace std;
    int r,c,a,b,i,j;
    char x[15][15];
    int main(){
    	cin >> r >> c >> a >> b;
    	for(i = 1; i <= r; i++){
    		for(j = 1; j <= c; j++){
    			x[i][j] = ((i + j) % 2? '.' : 'X');//用三目表达式判断当前位置上是哪个字符。 
    		}
    	}
    	for(i = 1; i <= r * a; i++){
    		for(j = 1; j <= c * b; j++){
    			cout<< x[(i - 1) / a + 1][(j - 1) / b + 1] ;//核心公式! 
    		}
    		cout<< endl;
    	}
        return 0;
    }
    
    • 1

    信息

    ID
    7059
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者