首页 > 其他 > 详细

洛谷 P1952 火星上的加法运算_NOI导刊2009提高(3)

时间:2017-12-15 20:30:50      阅读:263      评论:0      收藏:0      [点我收藏+]

题目描述

最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限.她想向你求助,作为一位优秀的程序员,你当然不会拒绝。

输入输出格式

输入格式:

 

第一行先愉入一个运算的进制N(2<=N<=36),接下来两行为需要进行运算的字符,其中每个字符串的长度不超过200位,其为N进制的数。其中包括0-9及a-z(代表10-35)。

 

输出格式:

 

在N进制下它们的和

 

输入输出样例

输入样例#1: 复制
20
1234567890
abcdefghij
输出样例#1: 复制
bdfi02467j
思路:模拟。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans[3010];
char s1[2010],s2[2010];
int main(){
    scanf("%d",&n);
    scanf("%s",s1);
    scanf("%s",s2);
    int len1=strlen(s1);
    int len2=strlen(s2);
    for(int i=0;i<=(len1-1)/2;i++)
        swap(s1[i],s1[len1-i-1]); 
    for(int i=0;i<=(len2-1)/2;i++)
        swap(s2[i],s2[len2-i-1]);
    int len=max(len1,len2);
    for(int i=0;i<len1;i++)
        if(s1[i]>=0&&s1[i]<=9)    ans[i]+=s1[i]-0;
        else ans[i]+=s1[i]-a+10;
    for(int i=0;i<len2;i++)
        if(s2[i]>=0&&s2[i]<=9)    ans[i]+=s2[i]-0;
        else ans[i]+=s2[i]-a+10;
    for(int i=0;i<len;i++)
        if(ans[i]>=n){
            ans[i+1]+=ans[i]/n;
            ans[i]=ans[i]%n;
            if(i==len-1)    len++;
        }
    for(int i=len-1;i>=0;i--)
        if(ans[i]>=0&&ans[i]<=9)    cout<<ans[i];
        else cout<<char(ans[i]-10+a);
}

 

 

洛谷 P1952 火星上的加法运算_NOI导刊2009提高(3)

原文:http://www.cnblogs.com/cangT-Tlan/p/8044674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!