CF1950B Upscaling题解
题意
给予你一个正整数 \(n\),构造一个如图的字符矩阵。
思路
注意数据 \(1\le n \le 20\),可以发现数据很小,于是我们可以暴力模拟。
我们可以将两列看为一列,两行看为一行。
然而我们可以发现缩成的一行的 \(i\) 等于被缩的两行的 \({i\div2}\) 的向上取整。
而缩成的一行的 \(i\) 如果是奇数,则证明被缩的两行在一二或五六行。
列与行是类似的。
缩成的一列的 \(i\) 等于被缩的两列的 \({i\div2}\) 的向上取整。
而缩成的一列的 \(i\) 如果是奇数,则证明被缩的两列在一二或五六列。
再根据它的行和列判断它是井号还是点。
代码
#include<bits/stdc++.h>
using namespace std;
int t,n;
int main(){
cin>>t;
while(t--){
cin>>n;
for(int i=1;i<=2*n;i++){
for(int j=1;j<=2*n;j++){
if(int(ceil(1.0*i/2))%2==1){//12,56行
if(int(ceil(j*1.0/2))%2==1){//12,56列
cout<<"#";
}else{//34,78列
cout<<".";
}
}else{//34,78行
if((int)(ceil(j*1.0/2))%2==1){//12,56列
cout<<".";
}else{//34,78列
cout<<"#";
}
}
}
cout<<"\n";
}
}
return 0;
}
标签:缩成,int,题解,Upscaling,CF1950B,两列
From: https://www.cnblogs.com/AUBSwords/p/18117659