zoukankan      html  css  js  c++  java
  • B进制加法(洛谷1604)

    分析:码农题,照这模拟就行,高精度的B进制,注意字符串反转的技巧。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 const int maxn=2200;
    15 char s[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    16 int n; //进制
    17 int vis1[maxn],vis2[maxn];
    18 int ans[maxn];
    19 int main()
    20 {
    21     while(cin>>n)
    22     {
    23         string a,b;
    24         cin>>a;
    25         cin>>b;
    26         memset(vis1,0,sizeof(vis1));
    27         memset(vis2,0,sizeof(vis2));
    28         int len1=a.length();  //反转第一个串
    29         for(int i=0;i<len1/2;i++){
    30             char temp=a[i];
    31             a[i]=a[len1-1-i];
    32             a[len1-1-i]=temp;
    33         }
    34         for(int i=0;i<len1;i++){
    35             int pos;
    36             for(int j=0;j<36;j++){
    37                 if(a[i]==s[j]){
    38                     pos=j; break; 
    39                 }
    40             }
    41             vis1[i]=pos;
    42         }
    43         int len2=b.length();   //反转第二个串
    44         for(int i=0;i<len2/2;i++){
    45             char tt=b[i];
    46             b[i]=b[len2-i-1];
    47             b[len2-1-i]=tt;
    48         }
    49         for(int i=0;i<len2;i++){
    50             int pos;
    51             for(int j=0;j<36;++j){
    52                 if(b[i]==s[j]){
    53                     pos=j; break;
    54                 }
    55             }
    56             vis2[i]=pos;
    57         }
    58         int mx=max(len1,len2);
    59         int cnt=0;
    60         for(int i=0;i<mx;i++){
    61             int temp=vis1[i]+vis2[i]+cnt;
    62             if(temp>=n){
    63                 cnt=1;
    64                 ans[i]+=temp%n;
    65             }else{
    66                 cnt=0;
    67                 ans[i]+=temp;
    68             }
    69         }
    70         if(cnt==1){
    71             ans[mx]=1; ++mx;
    72         }
    73         string ss;
    74         for(int i=0;i<mx;i++){
    75             ss+=s[ans[i]];
    76         }
    77         for(int i=0;i<mx/2;i++){
    78             char yy=ss[i];
    79             ss[i]=ss[mx-i-1];
    80             ss[mx-i-1]=yy;
    81         }
    82         cout<<ss<<endl;
    83     }
    84     return 0;
    85 }
    View Code
  • 相关阅读:
    沟通是项目管理知识体系中的九大知识领域之一
    项目管理的三要素时间、成本、质量
    项目管理提升效率的几大关键点
    收到FRDMKL02Z
    【转】arm 开发工具比较(ADS vs RealviewMDK vs RVDS)
    你不能自己把自己放弃写在毕业季
    【转】为什么你应该(从现在开始就)写博客
    Vivado 2014.4 FFT IP 使用及仿真
    项目需求的一些事
    娇荣电子工作室成立了
  • 原文地址:https://www.cnblogs.com/wolf940509/p/5954983.html
Copyright © 2011-2022 走看看