zoukankan      html  css  js  c++  java
  • hdu 2100

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100

    题意:两个26进制数相加

    思路:大数模拟(刚开始被题误导 利用进制转化做的WA,后来发现26进制数不超过200,即最大的26进制数有200位,若是转化为10进制会超出long long)

    注意:A为0

    代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<string>
     5 
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     char a[210],b[210];
    11     while(scanf("%s%s",a,b)!=EOF)
    12     {
    13         int i,d=0,s=0;
    14         char a1[210],b1[210];
    15         for(i=strlen(a)-1;i>=0;i--)  //尾部掐齐便于加和运算
    16             a1[d++]=a[i];
    17         for(i=strlen(b)-1;i>=0;i--)
    18             b1[s++]=b[i];
    19         if(d>=s)
    20         {
    21             for(i=s;i<d;i++)    //位数小的用‘A’补位
    22                 b1[i]='A';
    23         }
    24         else
    25         {
    26             for(i=d;i<s;i++)
    27                 a1[i]='A';
    28             int t=d;
    29             d=s;
    30             s=t;
    31         }        
    32         int fg=0;
    33         for(i=0;i<d;i++)
    34         {
    35             int t=a1[i]-'A'+b1[i]-'A'+fg;
    36             fg=t/26;
    37             a1[i]=t%26+'A';
    38         }
    39         if(fg)
    40         {
    41             a1[i++]=fg+'A';
    42         }
    43         fg=0;
    44         for(i=i-1;i>=0;i--)
    45         {
    46             if(a1[i]=='A'&&!fg&&i!=0) //去掉前导0,即‘A’
    47                 continue;
    48             if(a1[i]!='A')
    49                 fg=1;
    50             printf("%c",a1[i]);
    51         }
    52         printf("
    ");
    53     }
    54     
    55     return 0;
    56 }

    -------------------------欢迎评论-------------------------

  • 相关阅读:
    MYSQL之基本操作
    Python操作Mysql之基本操作
    编辑器
    iOS项目评估报告
    mac安装as配置
    屏幕适配
    CocoaPods配置步骤
    android网络监测
    获取通讯录
    json解析
  • 原文地址:https://www.cnblogs.com/x-x-y/p/7227884.html
Copyright © 2011-2022 走看看