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
 
个人感想
这道题测试了很多次,忘掉等号开以及字符数组太小等问题浪费了时间
 
source

#include <stdio.h>
#include <math.h>
#include <string.h> int prime(int x)
{
int flag = ;
for(int i = ; i <= sqrt(x); i++)
{
if(x % i == )
{
flag = ;
break;
}
}
return flag;
}
int main()
{
int p[], top = , len1, len2, num1[], num2[], ans[];
char str1[], str2[];
for(int i = ; top < ; i++)
{
if(prime(i))
{
p[top++] = i;
//printf("%d\n\n", p[top-1]);
}
}
while(~scanf("%s%s", str1, str2))
{
if(strcmp(str1, "") == || strcmp(str2, "") == )
break;
memset(num1, , sizeof(num1));
memset(num2, , sizeof(num2));
memset(ans, , sizeof(ans));
top = ;
int k = , cnt;
len1 = strlen(str1);
len2 = strlen(str2);
/*for(int i = 0; i < len1; i++)
{
printf("%c:%c\n", str1[i], str2[i]);
}
printf("\n\n"); */
//printf("len1 = %d len2 = %d\n", len1, len2);
for(int i = len1 - ; i >= ; i--)
{
if(str1[i] == ',')
{
top++;
k = ;
continue;
}
num1[top] += (str1[i] - '') * k;
//printf("i = %d : num1[%d] = %d\n\n", i, top, num1[top]);
k = k*;
}
cnt = top+;
//printf("cnt = %d\n", cnt);
top = ;
k = ;
for(int i = len2 - ; i >= ; i--)
{
if(str2[i] == ',')
{
top++;
k = ;
continue;
}
num2[top] += (str2[i] - '') * k;
//printf("i = %d : num2[top] = %d\n\n", i, top, num2[top]);
k = k*;
}
if(top+ > cnt)
cnt = top+;
//printf("cnt = %d\n", cnt);
for(int i = ; i < cnt; i++)
{
ans[i] += num1[i] + num2[i];
while(ans[i] >= p[i] && p[i] != )
{
ans[i+] += ans[i] / p[i];
ans[i] %= p[i];
}
//printf("ans[%d] = %d, num1[%d] = %d, num2[%d] = %d\n", i, ans[i], i, num1[i], i, num2[i]);
k = i+;
}
if(ans[k])
printf("%d,", ans[k]);
for(int i = cnt-; i > ; i--)
printf("%d,", ans[i]);
printf("%d\n", ans[]);
}
}

火星A+B(字符串整形转化,进制)的更多相关文章

  1. python-字符编码、字符串格式化、进制转化、数据类型、列表、元组、字典总结

    目录: 一.字符编码 二.字符串格式化 三.进制转换 四.数据类型及其操作 五.字符串转换 六.列表 七.元组 八.字典 一.字符编码: 计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字 ...

  2. 字节流、字符串、16进制字符串转换__Java(转)

    /** * @Package: * @ClassName:TypeConversion * @Description:字节流.字符串.16进制字符串转换 * @author:xk * @date:Ja ...

  3. strtol函数 将字符串转换为相应进制的整数

    转自http://hi.baidu.com/qwpsmile/blog/item/9bc44efa4f41018a9f514637.html +----------------+|      strt ...

  4. 字节流、字符串、16进制字符串转换__java

    package com.dvn.li.main; /** * @Package: * @ClassName:TypeConversion * @Description:字节流.字符串.16进制字符串转 ...

  5. Java字符串转16 进制工具类Hex.java

    Java字符串转16 进制工具类Hex.java 学习了:https://blog.csdn.net/jia635/article/details/56678086 package com.strin ...

  6. JavaScript中字符串与16进制之间的转换

    一.字符串转换为16进制 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  7. Java中字符串转为16进制表示

    Java中字符串转为16进制表示 String str = "鲸"; char[] chars = "0123456789ABCDEF".toCharArray ...

  8. Python输出16进制不带0x补零,整数转16进制,字符串转16进制

    Python输出16进制不带0x补零,整数转16进制,字符串转16进制   在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性.例如调试服务端刚接到的二进制数据(里面包含很多 ...

  9. lua 转换16进制字符串为10进制数值

    lua 转换16进制字符串为10进制数值 > print(tonumber()) 利用tonumber函数,“16”表示“03FFACB”为16进制数.

  10. C# 16进制转字符串,字符串转16进制

    { //========================================================== //16进制转字符串 public static byte[] HexTo ...

随机推荐

  1. 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .

    3.2.    “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模 ...

  2. ARM64调试环境

    自从上一次ZCTF做了一道ARM64的逆向题目后,我决定记录下利用qemu搭建ARM64的环境的过程,以后肯定会遇到更多ARM平台下的Reverse和PWN. 一 安装QEMU 我要模拟的是64位的A ...

  3. 【稳定婚姻问题】【HDU1435】【Stable Match】

    2015/7/1 19:48 题意:给一个带权二分图  求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...

  4. ASP.NET程序代码优化的七个方面

     ASP.NET程序性能优化的七个方面      一.数据库操作 1.用完马上关闭数据库连接 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比 ...

  5. CoreLocation导航Demo

    CoreLocation实现定位和导航功能还是非常简单的,基本思路是: 1.导入<CoreLocation/CoreLocation.h>头文件 2.使用该框架内的导航管理者,创建该导航管 ...

  6. Android ImageView图片自适应

    网络上下载下来的图片自适应:android:adjustViewBounds="true"(其详细解释在下面) <ImageView     android:id=" ...

  7. 在eclipse上提交任务到集群执行

    win7下eclipse远程开发hadoop程序,分为两种: (1)运行[Run As] Java Application, 打包程序为jar,上传集群执行(这里不做解释) (2)运行[Run As] ...

  8. Linux man 后面的数字含义及作用

    Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下: 1 Executable programs or shell co ...

  9. C# 单向链表数据结构 (一)

    单向链表数据结构是有节点组成,每个节点包含两部分,第一部分为存储数据,第二部分为指向下一个节点的指针.注意,有两个特色的节点,分别为“头节点”和“尾节点”,头节点本身没有数据,只存储下一个节点的指针, ...

  10. 翻书的效果:FMX.TSwipeTransitionEffect Animation

    This example shows how to use a TSwipeTransitionEffect transition and a TPathAnimation to simulate t ...