nefu 1116

4851 ワード

文字列暗号化
Problem : 1116
Time Limit : 1000ms
Memory Limit : 65536K
description
            ,       ,                  (  )。
        26     ,            ,   0~9      ,     :
1、              x,                          x       。  2a  a    2 ,       c,   1z  z    1 ,       a。
2、               ,              。

input
      ,               。     1000000,            ,            9,           。

output

sample_input
happynewyear
25ia1op4un4a1vy3ba24t

sample_output
happynewyear
happynewyear

 
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
char *ch="abcdefghijklmnopqrstuvwxyz";
char a[1200000];
int main()
{
    int i,k,j,shu,tmp,cou;
    while(scanf("%s",a)!=-1)
    {
        for(i=0;a[i]!='\0';)
        {
          k=0;shu=0;j=1;
          while(a[i]>='0'&&a[i]<='9')
          {
              k++;
              i++;
          }//   i     
          if(k)
          {
             for(cou=1;cou<=k;cou++)
             {
                 shu=shu+(((int)a[i-cou]-48)*j);
                 j=j*10;
             }
             tmp=(a[i]-97+shu)%26;
             printf("%c",ch[tmp]);
          }
          else cout<<a[i];
          i++;
        }
        cout<<endl;
    }
    return 0;
}

//while..おもしろい...
//次はタイムアウト前のコード
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
char *ch="abcdefghijklmnopqrstuvwxyz";
char a[1200000];
int main()
{
    int k,shu,tmp,i;
    while(scanf("%s",a)!=-1)
    {
        for(i=0;i<strlen(a);i++)
        {
          if(a[i]<='z'&&a[i]>='a')
          {
              if(a[i-1]>'9'||a[i-1]<'0')
              printf("%c",a[i]);
              else
              {
                  shu=(int)a[i-1]-48;
                  if(a[i-2]<='9'&&a[i-2]>='0')
                  shu=shu+((int)a[i-2]-48)*10;
                  tmp=(a[i]-97+shu)%26;
                  printf("%c",ch[tmp]);
              }
          }
        }
        cout<<endl;
    }

    return 0;
}