zoukankan      html  css  js  c++  java
  • PAT乙级1048-----数字加密 (20分)

    1048 数字加密 (20分)

    本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 12;对偶数位,用 B 的数字减去 A 的数字,若结果为负数,则再加 10。这里令个位为第 1 位。

    输入格式:

    输入在一行中依次给出 A 和 B,均为不超过 100 位的正整数,其间以空格分隔。

    输出格式:

    在一行中输出加密后的结果。

    输入样例:

    1234567 368782971
    
     

    输出样例:

    3695Q8118

    要注意的地方:
    输入以最大位数为主
    例如:12345 1 看作是12345 00001
    123 12345看作是 00123 12345
    首次通过代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int main(){
     5     char key[101];
     6     char user_input[101];
     7     char final_input[101];
     8     scanf("%s %s",key,user_input);
     9     int key_len=strlen(key)-1;
    10     int user_input_len=strlen(user_input)-1;
    11     int max;
    12     if(key_len>user_input_len) max=key_len;
    13     else max=user_input_len;
    14     int flag=1;int flag1=1;
    15     final_input[max+1]='';
    16     while(1){
    17         if(user_input_len<0) {
    18             if(flag1){
    19                for(int i=0;i<=key_len;i++){
    20                user_input[i]='0';
    21             }
    22             flag1=0;
    23             user_input_len=key_len;
    24             continue;
    25             }
    26             break;
    27         }
    28         else if(key_len<0){
    29             for(int i=user_input_len;i>=0;i--){
    30                 final_input[max--]=user_input[i];
    31             }
    32             break;
    33         }
    34         if(flag){
    35             flag=0;
    36             int x=(key[key_len]+user_input[user_input_len]-'0'-'0')%13;
    37             if(x>=0&&x<=9) final_input[max--]=x+'0';
    38             else {
    39                 switch(x){
    40                     case 10:final_input[max--]='J';break;
    41                     case 11:final_input[max--]='Q';break;
    42                     case 12:final_input[max--]='K';break;
    43                 }
    44             }
    45             
    46         }
    47         else {
    48            flag=1;
    49            int x=user_input[user_input_len]-key[key_len];
    50            if(x<0) x+=10;
    51            final_input[max--]=x+'0';
    52            
    53         }
    54         user_input_len--;
    55         key_len--;
    56     }
    57 
    58      printf("%s",final_input);
    59      return 0;
    60     
    61 }
    View Code
     
  • 相关阅读:
    linux基础-第十八单元_nginx部署
    centos7 启动docker失败--selinux-enabled=false
    crontab 写入文件目录
    kvm : Permission denied
    使用spice连接kvm guest主机
    python中bottle模块的使用
    如何监控开源 Apache Kafka?
    Spring Quartz
    【问题排查】kafka0.10.x过期数据不会自动删除问题
    Apache Kafka监控之Kafka Web Console
  • 原文地址:https://www.cnblogs.com/a982961222/p/12366302.html
Copyright © 2011-2022 走看看