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

Posted 一蓑烟雨任生平

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1952 火星上的加法运算_NOI导刊2009提高相关的知识,希望对你有一定的参考价值。

题目描述

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

输入输出格式

输入格式:

 

第一行先愉入一个运算的进制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提高的主要内容,如果未能解决你的问题,请参考以下文章

洛谷——P1795 无穷的序列_NOI导刊2010提高(05)

背包问题的优化(洛谷1776 宝物筛选_NOI导刊)

洛谷—— P1775 古代人的难题_NOI导刊2010提高(02)

洛谷—— P1775 古代人的难题_NOI导刊2010提高(02)

洛谷P1774最接近神的人_NOI导刊2010提高(02)

洛谷 P1808 单词分类_NOI导刊2011提高(01)