PATB1048:数字加密

来源:互联网 发布:做淘宝目前什么好做啊 编辑:程序博客网 时间:2024/06/08 19:21

PATB1048:数字加密

【思路】: 输入 循环 判断,只需要对每个元进行一次操作即可

【知识点】

杂类用hash表示

char has_z[3] = { 'J', 'Q', 'K' };

【知识点】

对于c的字符数组可以用reverse来进行字符数组的反转,本题由于是字符到bit的操作,所以字符反转是常规思路

reverse(a, a + strlen(a));reverse(b, b + strlen(b));

【知识点】

一个分支,只有一个操作而不是附加操作的话 需要用 if else 而非if(附加操作)

if (num <=12 && num >=10)            {                ans[k++] = has_z[num - 10];  //一定是 if else            }            else {                ans[k++] = '0' + num;            }

【知识点】

对于没法不全的补充,字符补充,分支判断

        if (i <strlen(a))        {            bit1 = a[i] - '0';        }        else{            bit1 = 0;        }

【参考代码】

    //数字加密void B1048(){    char has_z[3] = { 'J', 'Q', 'K' };    char a[110] , b[110];    cin >> a >> b;    reverse(a, a + strlen(a));    reverse(b, b + strlen(b));    int size = max(strlen(a), strlen(b));    char ans[110] = {'\0'}; int k = 0;    for (int i = 0; i < size; i++)    {        int bit1;        int bit2 ;        if (i <strlen(a))        {            bit1 = a[i] - '0';        }        else{            bit1 = 0;        }        if (i <strlen(b))        {            bit2 = b[i] - '0';        }        else{            bit2 = 0;        }        //得到数字        if (i % 2 == 0)//奇数        {            int num = (bit1 + bit2) % 13;            if (num <=12 && num >=10)            {                ans[k++] = has_z[num - 10];  //一定是 if else            }            else {                ans[k++] = '0' + num;            }        }        else{            int num2 = bit2 - bit1;            if (num2 < 0)            {                num2 += 10;            }            ans[k++] = '0' + num2;        }    }    reverse(ans, ans + strlen(ans));    puts(ans);}
0 0
原创粉丝点击