• poj1026


    题目大意:暗号
    Bod 和 Alice 计划使用一种全新的编码方案,令人惊讶的是这不是一个公开的公匙密码,但是他们的编码基于密匙,在Philadelphia on February 16th他们的会议中选择了密匙,他们选择的密匙是一个两两不等的整数序列,a1.....an,大于0并且小于等于n,编码基于一下原则。下面的信息是关键,这样关键的人物信息和数字相对齐,一个字符在i位置,编码的时候把他放在ai,ai就是相应数字位置的关键,并且他们以同样的编码信息进行编码,这个过程重复k次,在k次以后他们交换彼此的编码。
    这段信息的长度小于或者等于n,如果小于n,那么就在信息的后面能添加空格使它等于n,
    写一个程序完成这个编码

    发现因为没有重复的数字,所以有个内层的循环可以利用。试试吧->(也不知道k有多大,真坑)

    发现一个最坑的地方,数字和后面的字符串只有一个空格隔开,多余的空格都是属于后面字符串的,真的是非常坑啊,只能用getchar过滤一个空格!!!!

     #include<stdio.h>

    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define maxn 1005
    struct node
    {
        int num, k;
    }a[maxn];
    int Find(int x, int k, int e);
    int GetIndex(int i, int k);
    int main()
    {
        int i, j, n;
        while(scanf("%d", &n), n)
        {
            for(i=1; i<=n; i++)
            {
                scanf("%d", &a[i].num);
                a[i].k = 0;
            }
            for(i=1; i<=n; i++)
            {
                if(!a[i].k)
                    a[i].k = Find(i, 1, i);
            }
            int k;
            while(scanf("%d", &k), k!=0)
            {
                char s1[maxn]={0}, s2[maxn]={0};
                getchar();
                gets(s1+1);
                for(i=strlen(s1+1)+1; i<=n; i++)
                    s1[i] = ' ';
                for(i=1; i<=n; i++)
                {
                    j = GetIndex(i, k);
                    s2[j] = s1[i];
                }
                for(i=n; s2[i]==' '; i--)
                    s2[i] = 0;
                printf("%s ", s2+1);
            }
            printf(" ");
        }
        return 0;
    }
    int Find(int x, int k, int e)
    {
        if(a[x].num != e)
            return a[x].k = Find(a[x].num, k+1, e);
        return a[x].k = k;
    }
    int GetIndex(int i, int k)
    {
        int n=k%a[i].k;
        while(n--)
            i = a[i].num;
        return i;
    }
  • 相关阅读:
    CSS样式2
    页面布局
    CSS样式1
    HTML
    Document
    Document
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/liuxin13/p/4383918.html
Copyright © 2020-2023  润新知