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
     
  • 相关阅读:
    Alwayson 与 mirror
    cmd运行sql server安装
    搭建阿里云lnmp环境 (centos7+nginx+MySQL5.7.16+PHP7)
    php-fpm.conf 配置文件(实际项目中使用)
    编译安装php7.0.0
    Linux 服务器环境安装参考文档
    MySQL5.7 my.cnf 优化配置参数
    CentOS 7中源码安装MySQL 5.7.16 (亲测成功)
    mysql启动报错:Starting MySQL... ERROR! The server quit without updating PID file
    centos7下源码安装mysql5.7.16
  • 原文地址:https://www.cnblogs.com/a982961222/p/12366302.html
Copyright © 2011-2022 走看看