| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
一次AC,贴代码//============================================================================
// Name : main1026.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <string>
using namespace std;
class node{
public:
int num;
node* next;//置换中下一个位置
node* rep;//代表的元素
int cirlen;
};
int main() {
//cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
while(1){
int len;
cin >> len;
if(len <= 0) return 0;
node* zh = new node[len + 1];
for(int i = 1; i <= len; i++){
cin >> zh[i].num;
}
//下面开始求置换
for(int i = 1; i <= len; i++){
zh[i].next = NULL;
}
for(int i = 1; i <= len; i++){
if(zh[i].next != NULL) continue;//已经计算了置换
zh[i].rep = zh + i;
node* iter = zh + zh[i].num;
int cL = 1;
zh[i].next = iter;
while(iter != zh + i){
iter->rep = zh + i;
iter->next = zh + iter->num;
iter = iter->next;
cL++;
}
zh[i].cirlen = cL;
}
//cout << "ehe" << endl;
while(1){
int ci;
cin >> ci;
if(ci <= 0) break;
string s;
getline(cin, s);
//cout << s << endl;
s = s.substr(1);
//cout << s << endl;
char* chars = new char[len + 1];
char* resChars = new char[len + 1];
int slen = s.length();
for(int i = 0; i < slen; i++){
chars[i+1] = s[i];
}
for(int i = slen; i < len; i++){
chars[i+1] = ' ';
}
//cout << "1" << endl;
for(int i = 1; i <= len; i++){
node* idx = zh + i;
int py = ci % zh[i].rep->cirlen;
for(int j = 0; j < py; j++){
idx = idx->next;
}
//cout << zh << " " << idx << endl;
resChars[idx - zh] = chars[i];
}
for(int i = 1; i <= len; i++){
cout << resChars[i];
}
cout << endl;
delete [] chars;
delete [] resChars;
}
cout << endl;
delete [] zh;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator