题解 P6354 【[COCI2007-2008#3] TAJNA】
这是本蒟蒻的第01 篇题解。
管理大大求过QAQ。
思路
其实这道题可以不写模拟
那么有人就要问了,不写模拟在原字符串上直接输出也可以,可是这个位置怎么办呢?没关系,现在我来教你怎么算位置。(为了方便,我们用数字表示)
发现什么了吗,如果没发现,那么下面我会给你更详细的解说。
是不是恍然大悟?
Code:
#include<bits/stdc++.h>//无敌头文件,你值得拥有
using namespace std;
string n;
bool k[101];//防止一些奇怪的错误,本蒟蒻也不知为何
int a=1,b=1,x,ks;//a,b是长方形的长和宽,x是n的位数,ks是指针
int main(){
cin>>n;
x=n.size();
//求长和宽
for(int i=1;i*i<=x;i++){
if(x%i==0){
a=i;
b=x/i;
}
}
//重点来了!
for(int i=1;i<=a;i++){
while(k[ks]){
ks++;
}
//防止一些bug
cout<<n[ks];
k[ks]=1;
for(int j=1;j<b;j++){
cout<<n[ks+j*a];//这就是我前面讲了大半天的东东
k[ks+j*a]=1;
}
}
return 0;
禁止抄袭!!!
}
管理大大求过啊……