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

Problem Description
读入两个不超过25位的火星正整数A和B,计算A+B。需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数。例如:地球上的10进制数2,在火星上记为“1,0”,因为火星个位数是2进制的;地球上的10进制数38,在火星上记为“1,1,1,0”,因为火星个位数是2进制的,十位数是3进制的,百位数是5进制的,千位数是7进制的……
Input
测试输入包含若干测试用例,每个测试用例占一行,包含两个火星正整数A和B,火星整数的相邻两位数用逗号分隔,A和B之间有一个空格间隔。当A或B为0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即火星表示法的A+B的值。
Sample Input
1,0 2,1
4,2,0 1,2,0
1 10,6,4,2,1
0 0
Sample Output
1,0,1
1,1,1,0
1,0,0,0,0,0

解题思路:这道题跟进制的转换没什么区别,就是每位改变了进制的大小,仍然是那个做法(进制转换)。这是一道处理字符串的题目,做法就是将A、B这两个字符串读进来,分别用a,b int数组来保存从高位到低位(从左到右)每一位的数字,再反转(从右到左),(前面要清零,便于做竖式计算)。最后边读边输出。

AC代码:

 #include<bits/stdc++.h>
using namespace std;
int t[]={,,,,,,,,,,,,,,,,,,,,,,,,,};//先打好表
int main()
{
int len1,len2,g1,g2,gmax,k,tmp,ans,h;//g1、g2分别是记录A、B有几位数,gmax就是最大位数,tmp,ans具体看运算
char A[]={},B[]={};
int a[]={},b[]={},c[]={};
while(cin>>A>>B,strcmp(A,"")||strcmp(B,"")){
tmp=g1=g2=,len1=strlen(A),len2=strlen(B);
memset(a,,sizeof(a));//注意清0,养成好习惯
memset(b,,sizeof(b));
memset(c,,sizeof(c));
for(int i=;i<=len1;i++){
if(A[i]==','||A[i]=='\0'){a[g1++]=tmp;tmp=;}//先把逗号之间的数依次从高位存起来,后面反转便于按竖式(低位)依次相加
else tmp=tmp*+A[i]-'';
}
for(int i=;i<=len2;i++){
if(B[i]==','||B[i]=='\0'){b[g2++]=tmp;tmp=;}
else tmp=tmp*+B[i]-'';
}
k=,gmax=max(g1,g2);
for(int i=,j=g1-;i<j;i++,j--)swap(a[i],a[j]);//反转
for(int i=,j=g2-;i<j;i++,j--)swap(b[i],b[j]);
for(h=;h<gmax;h++){
ans=a[h]+b[h]+tmp;
tmp=ans/t[h];//按素数进制转换
c[k++]=ans%t[h];
}
if(tmp){
while(tmp){//要循环直到多出来的tmp为0,才算是进制转换完成
c[k++]=tmp%t[h];
tmp/=t[h++];
}
}
for(int i=k-;i>;i--)//反向输出
printf("%d,",c[i]);
printf("%d\n",c[]);
}
return ;
}

题解报告:hdu 1230 火星A+B(字符串)的更多相关文章

  1. HDU 1230 火星A+B

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1230 水题模拟一道,主要考验代码能力,刷完题就感觉自己还是太弱了. #include<cmath ...

  2. 题解报告:hdu 1398 Square Coins(母函数或dp)

    Problem Description People in Silverland use square coins. Not only they have square shapes but also ...

  3. 题解报告:hdu 2069 Coin Change(暴力orDP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2069 Problem Description Suppose there are 5 types of ...

  4. 题解报告:hdu 1028 Ignatius and the Princess III(母函数or计数DP)

    Problem Description "Well, it seems the first problem is too easy. I will let you know how fool ...

  5. 2015浙江财经大学ACM有奖周赛(一) 题解报告

    2015浙江财经大学ACM有奖周赛(一) 题解报告 命题:丽丽&&黑鸡 这是命题者原话. 题目涉及的知识面比较广泛,有深度优先搜索.广度优先搜索.数学题.几何题.贪心算法.枚举.二进制 ...

  6. 「题解报告」 P3167 [CQOI2014]通配符匹配

    「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通 ...

  7. cojs 强连通图计数1-2 题解报告

    OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...

  8. cojs 二分图计数问题1-3 题解报告

    OwO 良心的FFT练手题,包含了所有的多项式基本运算呢 其中一部分解法参考了myy的uoj的blog 二分图计数 1: 实际是求所有图的二分图染色方案和 我们不妨枚举这个图中有多少个黑点 在n个点中 ...

  9. CF Educational Round 78 (Div2)题解报告A~E

    CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students​ 依题意模拟即可 #include<bits/stdc++.h> us ...

随机推荐

  1. 排队理论之性能分析 - Little Law &amp; Utilization Law

    了解一个系统的性能一般是參考一些度量值(Metric),而怎样计算出这些Metric就是我们要讨论的.Little Law(排队理论:利特儿法则)和Utilization Law是Performanc ...

  2. 我的gulp.js清单

    var gulp = require('gulp'), cssmin = require('gulp-clean-css'), //压缩css文件 concat = require('gulp-con ...

  3. Sublime Text 3设置吊炸天PHP开发环境

    @heiyeluren @created: 2016/5/31 @last modify: 2016/7/8 1. 下载安装Sublime Text 3 http://www.sublimetext. ...

  4. 一个程序员对微信小程序的看法

      我们公司用两周的时间开发了一款微信小程序,叫<如e支付>,大家可以去体验一下.由于接口都是写好的,所以开发起来很快.我将从4个不同的角度来介绍我对微信小程序的理解. 1.技术的角度   ...

  5. jdbc 连 oracle 12c

    jdbc 连 oracle 12c,除了连接串要书写正确(如果用PDB,可插拔数据库),必要的JDBC包也是不可或缺的. 比如我,机器本身装了个oracle 10g,然后上面有个java项目,使用jd ...

  6. 2016/3/10 PHP (超文本预处理器) 是什么?

    PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于W ...

  7. springmvc的异常统一处理

    在项目实际开发中,异常的统一处理是一个常态.假如不使用异常统一处理,我们往往需要在service层中捕获异常,并且根据不同的异常在result中的设置不同的code并给予相应的提示.这样可能会导致不同 ...

  8. js数组清空和去重

    1.splice var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary); // 输出 Array[0],空数组,即被清空了 2 ...

  9. Servlet8

    一.Annotation 进行配置不需要 web.xml 新建new Servlet 时,不需要在web.xml 文件中生成Servlet的相关信息 import java.io.IOExceptio ...

  10. 【ZJOI 2006】 物流运输

    [题目链接] 点击打开链接 [算法] 令cost(i,j) = 第i天到第j天走相同的路线,路线长度的最小值 那么,只需筛选出第i天到第j天可以装卸货物的码头,然后将这些码头之间连边,跑弗洛伊德(或其 ...