• 1048 数字加密


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

    输入格式:

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

    输出格式:

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

    输入样例:

    1234567 368782971
    

    输出样例:

    3695Q8118
    
     
    思路:可以先讨论一下两个字符串的长度问题再模拟......
     
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 int main()
     6 {
     7     char num1[101],num2[101];
     8     scanf("%s %s",num1,num2);
     9     int len1=strlen(num1);
    10     int len2=strlen(num2);
    11     int max=-1;
    12     if(len1>max) 
    13         max=len1;
    14     if(len2>max)  
    15         max=len2;
    16     char str1[max],str2[max];
    17     if(max==len1)
    18     {
    19         for(int i=0;i!=max;i++)
    20             str1[i]=num1[max-i-1];
    21         str1[max]='';
    22         for(int i=0;i<len2;i++)
    23             str2[i]=num2[len2-i-1];
    24         for(int i=len2;i<max;i++)
    25             str2[i]='0';
    26         str2[max]='';
    27     }
    28     else if(max==len2&&len1!=len2)
    29     {
    30         for(int i=0;i!=max;i++)
    31             str2[i]=num2[max-i-1];
    32         str2[max]='';
    33         for(int i=0;i<len1;i++)
    34             str1[i]=num1[len1-i-1];
    35         for(int i=len1;i<max;i++)
    36             str1[i]='0';
    37         str1[max]='';
    38     }
    39     int num[101];
    40     int i,sum,t=0;
    41     for(i=0;i<max;i++)
    42     {
    43         if(i%2==0)//ÆæÊýλ
    44         {
    45             sum=((str1[i]-'0')+(str2[i]-'0'))%13;
    46             num[t++]=sum;
    47          } 
    48          else if(i%2==1)
    49          {
    50              sum=(str2[i]-'0')-(str1[i]-'0');
    51              if(sum<0)
    52                sum=sum+10;
    53              num[t++]=sum;
    54          }
    55     }
    56     for(int i=t-1;i>=0;i--)
    57     {
    58         if(num[i]>=0&&num[i]<=9)
    59             printf("%d",num[i]);
    60         else if(num[i]==10)     
    61             printf("J");
    62         else if(num[i]==11)  
    63             printf("Q");
    64         else if(num[i]==12)   
    65             printf("K");
    66     }
    67     return 0;
    68 }
    大佬见笑,,
  • 相关阅读:
    thinkphp中<eq>标签的使用
    Thinkphp中的eq比较标签
    select取数据库值设为默认值,TP框架模板中ifelse
    fastadmin 前端根据status自定义显示不同的内容
    CMS自定义表单无法切换“是否需要登录”开关
    js获取域名
    fastadmin 页面添加编辑日期时间
    bootstrap-table给单元格添加链接
    python相关资料
    区块链共识机制 —— PoW共识的Python实现
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10479149.html
Copyright © 2020-2023  润新知