zoukankan      html  css  js  c++  java
  • 九度oj 题目1340:小A的计算器

    题目描述:

     以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示。
     现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算。你能帮小A实现这个计算器吗?

    输入:

     输入的第一行包括一个整数N(1<=N<=100)。
     接下来的N行每行包括两个26进制数x和y,它们之间用空格隔开,每个数的位数最多为10位,我们可以保证相加的结果的位数最多也是10位。每个数会用小A所设计的操作系统中的表示方法来表示,如:bsadfasdf。即每个数的各个位均由26个小写字母a-z中的一个来表示。

    输出:

     输出x和y相加后的结果,结果也要用题目中描述的26进制数来表示。

    样例输入:
    4
    ba cd
    c b
    b c
    ba c
    样例输出:
    dd
    d
    d
    bc
    提示:

     1.注意,26进制数的表示方式和10进制数一样,最右边是最低位。
     2.输入的两个数有可能有前缀0,即a,请在程序中进行处理。
     3.结果中如果出现前缀0,请自动滤除,除非结果就是0。如:结果为ab时,要输出b,因为a表示0。

     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cstring>
     4 #include <algorithm>
     5 
     6 char ta[12], tb[12], tc[15];
     7 int na[15],nb[15],nc[15];
     8 
     9 int main(int argc, char const *argv[])
    10 {
    11     int n;
    12     //freopen("input.txt","r",stdin);
    13     while(scanf("%d",&n) != EOF) {
    14         while(n--) {
    15             scanf("%s %s",ta,tb);
    16             int lena = strlen(ta);
    17             int lenb = strlen(tb);
    18             memset(na,0,sizeof(na));
    19             memset(nb,0,sizeof(nb));
    20             memset(nc,0,sizeof(nc));
    21 
    22             for(int i = lena - 1, j = 0; i >= 0; i--, j++) {
    23                 na[j] = ta[i] - 'a';
    24             }
    25             for(int i = lenb - 1, j = 0; i >= 0; i--, j++) {
    26                 nb[j] = tb[i] - 'a';
    27             }
    28             int ci = 0;
    29             for(int i = 0; i < 15; i++) {
    30                 int ben = na[i] + nb[i] + ci;
    31                 nc[i] = ben % 26;
    32                 ci = ben/26;
    33             }
    34             int j = 0;
    35             int isBegin = false;
    36             for(int i = 14; i >= 0; i--) {
    37                 if(!isBegin && nc[i] == 0) {
    38                     continue;
    39                 }
    40                 else if(!isBegin && nc[i] != 0) {
    41                     isBegin = true;
    42                     tc[j++] = nc[i] + 'a';
    43                 }
    44                 else if(isBegin) {
    45                     tc[j++] = nc[i] + 'a';
    46                 }
    47             }
    48             if(j == 0) {
    49                 tc[j++] = 'a';
    50             }
    51             tc[j] = '';
    52             puts(tc);
    53         }
    54     }
    55     return 0;
    56 }

     注意提示3

  • 相关阅读:
    01Go开发环境搭建(参考无闻大神)
    巨蟒python全栈开发flask4
    巨蟒python全栈开发flask3
    巨蟒python全栈开发flask2
    巨蟒python全栈开发flask1
    巨蟒python全栈开发flask目录
    巨蟒python全栈开发linux之cento9
    巨蟒python全栈开发linux之cento8
    巨蟒python全栈开发linux之centos7
    巨蟒python全栈开发linux之centos6 第二篇
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5775678.html
Copyright © 2011-2022 走看看