hdu 1230 火星A+B

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 <string.h>

using namespace std;

const int Max = 26;
const int prime[Max] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101 };
int a[Max], b[Max], sum[Max];
int ta[Max], tb[Max];

int main()
{
    while (true)
    {
        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
        memset(sum, 0, sizeof(sum));

        memset(ta, 0, sizeof(ta));
        memset(tb, 0, sizeof(tb));

        int alen = 0;
        while (true)
        {
            char tc;    // character ‘,‘
            scanf("%d%c", &a[alen], &tc);
            if (tc == ‘ ‘)
            {
                break;
            }
            alen++;
        }

        int blen = 0;
        while (true)
        {
            char tc;    // character ‘,‘
            scanf("%d%c", &b[blen], &tc);
            if (tc == ‘\n‘)
            {
                break;
            }
            blen++;
        }

        if (a[0] == 0 && alen == 0 && b[0] == 0 && blen == 0)
        {
            break;
        }

        memcpy(ta + Max - 1 - alen, a, sizeof(int)*(alen + 1));
        memcpy(tb + Max - 1 - blen, b, sizeof(int)*(blen + 1));
        int tc = 0;
        for (int i = Max - 1; i >= 0; i--)
        {
            sum[i] = ta[i] + tb[i] + tc;
            tc = sum[i] / prime[Max - i - 1];
            sum[i] = sum[i] % prime[Max - i - 1];
        }

        int sumi = 0;
        while (sum[sumi] == 0)
        {
            sumi++;
        }
        for (int i = sumi; i < Max; i++)
        {
            if (i != sumi)
            {
                printf(",");
            }
            printf("%d", sum[i]);
        }
        printf("\n");
    }

    system("pause");
    return 0;
}
时间: 2024-10-26 17:04:12

hdu 1230 火星A+B的相关文章

HDOJ 1230火星A+B

来源:  http://acm.hdu.edu.cn/showproblem.php?pid=1230 火星A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10562    Accepted Submission(s): 3524 Problem Description 读入两个不超过25位的火星正整数A和B,计算A+B.需要注

杭电 1230 火星A+B

火星A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10279    Accepted Submission(s): 3402 Problem Description 读入两个不超过25位的火星正整数A和B,计算A+B.需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数.例如:地球上的10进制数2,在火星上记

杭电acm 1230 火星a+b(进制)

火星A+B                              Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)                                          Total Submission(s): 13903    Accepted Submission(s): 4810Problem Description 读入两个不超过25位的火

hdu1230 火星A+B

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1230 题目类型: 模拟 题意概括: 第i位数的进制为第i个素数,求两个这样的数之和 解题思路: 根据给的范围,先将前29位素数打表出来,然后通过大数加法的方法即可 题目: 火星A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1289

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

HDU分类

模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 12

hdu 1716(dfs)

题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1716 排列2 Problem Description Ray又对数字的列产生了兴趣:现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束. Output 对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数

hdu 1577 WisKey的眼神 (数学几何)

WisKey的眼神 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2059    Accepted Submission(s): 625 Problem Description WisKey的眼镜有500多度,所以眼神不大好,而且他有个习惯,就是走路喜欢看着地(不是为了拣钱哦^_^),所以大家下次碰见他的时候最好主动打下招呼,呵呵.但是

HDU——PKU题目分类

HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201