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[]);
}
}

最新文章

  1. HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)
  2. hd 2112 HDU Today
  3. 上传文件时,Request报文头不同浏览器会产生不同的content-type
  4. 关于for循环条件性能问题
  5. nyist 42 一笔画 (欧拉回路 + 并查集)
  6. [置顶] 玩转Eclipse — 自动注释插件JAutodoc
  7. windows下使用python googleprotobuf
  8. jquery的slideUp、slideDown、slideToggle等涉及滑动效果的一系列函数,在IE浏览器下有几处bug
  9. C--指针数组
  10. Android - 自定义控件之圆形控件
  11. 我的&quot;Hello World!&quot;之旅
  12. Android与javascript中事件分发机制的简单比较
  13. Bootstrap优秀模板-ColorAdmin.4.3.0
  14. Jan.09
  15. Java笔记(三)异常
  16. Effective Java 第三版—— 87. 考虑使用自定义序列化形式
  17. 利用ONENET平台控制MPC
  18. Msf提权步骤
  19. 1.Spring对JDBC整合支持
  20. iOS - UICollectionView 瀑布流 添加表头视图的坑

热门文章

  1. Parallels destop8 无法创建bootcamp虚拟机
  2. base64图片在各种浏览器的兼容性处理
  3. asp.net 页面跳转的方法
  4. [string]字符串中几个比较难的算法和容易搞混的题目
  5. C++ Primer之 十二章 类
  6. C++结构体中sizeof(1)
  7. linux自旋锁
  8. Repeater隔行变色,两个方式
  9. js &amp; jq 加载js
  10. 设置php在apache下加载ini配置文件路径,~和curl扩展无法加载的问题