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
 
 
用大数的方法做 一位一位分开求 最后倒叙输出

#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; int hash[];
int sir[];
char ch1[],ch2[];
int num1[],num2[],n1[],n2[],sum[]; int main()
{
int k=;
for(int i=;i<=;i++)
{
if(!hash[i])
{
sir[k++]=i;
for(int j=i+i;j<=;j+=i)
hash[j]=;
}
} while(scanf("%s%s",ch1,ch2)!=EOF)
{ if(strcmp(ch1,"")==&&strcmp(ch2,"")==)
break;
int k1=,k2=;
num1[]=num2[]=;
for(int i=;i<strlen(ch1);i++)
{
if(ch1[i]==',')
{
k1++;
num1[k1]=;
continue;
}
num1[k1]=num1[k1]*+ch1[i]-'';
//cout<<num1[k1];
}
//cout<<endl;
for(int i=;i<strlen(ch2);i++)
{
if(ch2[i]==',')
{
k2++;
num2[k2]=;
continue;
}
num2[k2]=num2[k2]*+ch2[i]-'';
//cout<<num2[k2];
}
//cout<<endl; memset(n1,,sizeof(n1));
memset(n2,,sizeof(n2));
for(int i=k1;i>;i--)
n1[k1-i+]=num1[i];
for(int i=k2;i>;i--)
n2[k2-i+]=num2[i]; //for(int i=1;i<=k1;i++)
//printf("%d,",n1[i]); int K=k1>k2?k1:k2;
for(int i=;i<=K;i++)
{
if(i==)
sum[i]=n1[i]+n2[i];
else
{
if(sum[i-]>=sir[i-])
sum[i]=n1[i]+n2[i]+;
else
sum[i]=n1[i]+n2[i];
}
//cout<<sum[i]<<endl;
}
if(sum[K]>=sir[K])
sum[++K]=;
for(int i=K;i>;i--)
{
if(i==K)
{
printf("%d",sum[i]%sir[i]);
}
else
printf(",%d",sum[i]%sir[i]);
}
printf("\n");
}
return ;
}

hdu1230火星A+B (大数题)的更多相关文章

  1. HDU1230 火星A+B

    火星A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  2. hdu1002 A + B Problem II(大数题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 A + B Problem II Time Limit: 2000/1000 MS (Java/ ...

  3. [火星补锅] 水题大战Vol.2 T2 && luogu P3623 [APIO2008]免费道路 题解

    前言: 如果我自己写的话,或许能想出来正解,但是多半会因为整不出正确性而弃掉. 解析: 这题算是对Kruskal的熟练运用吧. 要求一颗生成树.也就是说,最后的边数是确定的. 首先我们容易想到一个策略 ...

  4. oj 1002题 (大数题)

    #include <stdio.h> #include <string.h> int main(void) { int q,j,h,k,l; int d; ],s2[];//题 ...

  5. [火星补锅] 水题大战Vol.2 T1 && luogu P1904 天际线 题解 (线段树)

    前言: 当时考场上并没有想出来...后来也是看了题解才明白 解析: 大家(除了我)都知道,奇点和偶点会成对出现,而出现的前提就是建筑的高度突然发生变化.(这个性质挺重要的,我之前没看出来) 所以就可以 ...

  6. HDU2054_A == B ?【模拟题】【大数】【水的问题】

    A == B ? Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  7. 大数运算(python2)

    偶然又遇到了一道大数题,据说python大数运算好屌,试了一发,果然方便-1 a = int( raw_input() ); //注意这里是按行读入的,即每行只读一个数 b = int( raw_in ...

  8. 玲珑杯1007-A 八进制大数加法(实现逻辑陷阱与题目套路)

    题目连接:http://www.ifrog.cc/acm/problem/1056 DESCRIPTION Two octal number integers a, b are given, and ...

  9. JAVA大数类练手

    今天突然看到了OJ上的大数类题目,由于学习了一点大数类的知识.果断水了6道题......都是非常基础的.就当的练手的吧. 学到的只是一些大数类的基本操作.以后多做点这样的题,争取熟练运用水大数题... ...

随机推荐

  1. 带你走进EJB--MDB实现发送邮件(1)

    在实际的项目中我们有这样的需求,用户注册网站成功之后系统会自动的给注册用户发送注册成功通知邮件,而发送通知邮件的具体过程我们可以通过MDB来实现. 在用MDB来实现发送通知过程之前我们需要先了解一下J ...

  2. bootchart--检测linux启动性能的软件

    bootchart--检测linux启动性能的软件 摘自http://www-128.ibm.com/developerworks/library/l-boot-faster/index.html?c ...

  3. FFT(快速傅里叶变换):HDU 4609 3-idiots

    3-idiots Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. dll文件已经引用,但using找不到命名空间

    一:问题截图 二:解决办法 1.没看到lz的代码中有Vancl.Server的dll. 2.确实有编译不过的问题,是Vancl.WindowsServices这个工程的target framework ...

  5. Eclipse集成环境中Android SDK下载及更新失败解决方案

    由于公司新项目比较忙,有好长一段时间没碰Android开发咯! 近期闲来在网上下了个开源的应用想拿来自己学习下其中的源码及整体设计,当我把下下来的项目导入Eclipse中时,报如下警告: 原因是我本地 ...

  6. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

    出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙,目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 若想令自己所写的对象具有拷贝功能,则需实现 N ...

  7. hadoop 2.0 详细配置教程(转载)

    转载: http://www.cnblogs.com/scotoma/archive/2012/09/18/2689902.html 作者:杨鑫奇 PS:文章有部分参考资料来自网上,并经过实践后写出, ...

  8. windows路由命令route

    route print 查看当前的路由信息 route add 10.0.0.0 mask 255.0.0.0 10.1.1.1 增加一条到10.0.0.0/8网络的路由,网关是10.1.1.1 ro ...

  9. Linux 输出重定向>和>>的区别是什么

    > 是定向输出到文件,如果文件不存在,就创建文件:如果文件存在,就将其清空:一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节): & ...

  10. PHP CodeBase: 判断用户是否手机访问(转)

    随着移动设备的普及,网站也会迎来越来越多移动设备的访问.用适应PC的页面,很多时候对手机用户不友好,那么有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面.这里就介绍 ...