Отримання знань

дистанційна підтримка освіти школярів


Шифр
http://acm.pku.edu.cn/JudgeOnline/problem?id=1026

   Входные данные

   Выходные данные

   Пример входных данных

   Пример выходных данных

   Анализ условия и обсуждение идеи решения

   Пример решения на С++:

#include < stdio.h >
#include < string.h >
char ss[2][210];
int code[210];
int change[210];
int n;
int time;

int main()
{
int i,j,k,l;
scanf("%d",&n);
while (n)
{
for (i = 0; i < n; i++)
{
scanf("%d",&code[i]);
code[i]--;
}
memset(change,0,sizeof(change));
for (i = 0; i < n; i++)
{
j = i; k = 0;
do
{
j = code[j];
k++;
} while (j != i);
change[i] = k;
}
scanf("%d",&time);
while (time)
{
getchar();
memset(ss,0,sizeof(ss));
gets(ss[0]);
j = strlen(ss[0]);l=0;
while (ss[0][j-1] == ' ' || ss[0][j-1] == '\n')
{
j--;
ss[0][j] = '\0';
if (j == 0) break;
}
while (j < n)
{
ss[0][j] = ' ';
ss[0][++j] = '\0';
}
for (i = 0; i < n; i++)
{
l = time % change[i];
j = i;
for ( k = 1; k <= l; k++)
j = code[j];
ss[1][j] = ss[0][i];
}
printf("%s\n",ss[1]);
scanf("%d",&time);
}
printf("\n");
scanf("%d",&n);
}
return 0;
}

 

Попередня Зміст Наступна
В системі: гості - (1); користувачі - (0)