1048. 数字加密(20)

来源:互联网 发布:淘宝一件代发是真的吗 编辑:程序博客网 时间:2024/06/05 21:14

哇,这道题如果B的位数小于A的话前面要补0。这个题目完全没说清嘛。好坑。
顺便直接在本题中汇总一些常用的字符串处理函数:
1.strcat(arr1, arr2):把字符串arr2连接到arr1后面,在末尾自动添加’\0’。如果arr1结尾没有’\0’,则直接连接。如果arr1末尾有’\0’会被覆盖掉。
2.strcmp(arr1, arr2):按字典上顺序比较arr1和arr2,返回arr1-arr2的差值。
3.strcpy(arr1, arr2):直接把arr2复制到arr1中,将arr1原来的串覆盖掉。
4.strncat(arr1, arr2, count):把字符串arr2中不多于count的字符连接到arr1后面,在末尾自动添加’\0’。如果arr1结尾没有’\0’,则直接连接。如果arr1末尾有’\0’会被覆盖掉。
5.strncmp(arr1, arr2, count)::按字典上顺序比较arr1和arr2不多于count个字符,返回arr1-arr2的差值。
6.strncpy(arr1, arr2, count):把arr2中count个字符复制到arr1中去,arr2必须终止符为’\0’,如果arr2字符少于count个则将多个’\0’加到arr1的尾部,知道arr1的字符个数达到count。如果arr2的字符多于count,则结果串arr1末尾无’\0’。

// 2017/10/14 NCU // PAT-B 1053// scienceZ#include <cstdio>#include <cstring>#include <deque>#include <iostream>#include <algorithm>using namespace std;char A[150];char C[150];char B[150];int main(){      cin >> A >> C;    int i = strlen(A)-1;    int j = strlen(C)-1;        bool key = true;    if (i>j) {        for (int k = 0; k<i-j; k++) B[k] = '0';        j = i;    }    strcat(B, C);       while(i>=0 && j>=0){        if (key){            int t = A[i]-'0'+B[j]-'0';            t%=13;            if(t>9){                switch(t){                    case 10:                        t = 'J';                        break;                    case 11:                        t = 'Q';                        break;                    case 12:                        t = 'K';                        break;                                      }            }else t = t+'0';            B[j] = t;            key = false;            i--;            j--;        } else{            int t = B[j]-A[i];            if (t < 0){                t+=10;                t+='0';            } else  t+='0';            B[j] = t;            i--;            j--;            key = true;            }    }      printf("%s", B);      return 0;} 
原创粉丝点击