博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1230 火星A+B【进制】
阅读量:6242 次
发布时间:2019-06-22

本文共 1706 字,大约阅读时间需要 5 分钟。

问题链接:。

问题简述:参见上述链接。

问题分析这是一个有关进制的问题,需要了解进制的原理,相关知识背景是必要的

人们通常使用10进制,每一位都是逢10进1。另外一个重要的概念是位权的概念,即每一个位置不同的数字其权值不同。10进制中,个位的权是1,十位的权是10,百位的权是100,依此类推。10进制中,高1位(左边位)的权是低一位(右边位)的10倍。

然而,这个问题的每一位的权是素数,这一点有所不同,没有任何问题,也是可以计算的。

程序说明(略)。

AC的C语言程序如下:

/* HDU1230 火星A+B */#include 
#include
#define MAXN 30int primes[26]={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[MAXN], b[MAXN], sum[MAXN], acount, bcount, count;char c;int main(void){ int i, j; while(1) { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(sum, 0, sizeof(sum)); i = 0; for(;;) { scanf("%d%c", &a[i], &c); if(c == ' ') break; else i++; } acount = i; i = 0; for(;;) { scanf("%d%c", &b[i], &c); if(c == '\n') break; else i++; } bcount = i; if(acount == 0 && bcount == 0 && a[0] == 0 && b[0] == 0) break; count = (acount > bcount) ? acount : bcount; for(i=acount, j=0; i >= 0; i--, j++) sum[j] += a[i]; for(i=bcount, j=0; i >= 0; i--, j++) sum[j] += b[i]; for(i=0; i<=count; i++) if(sum[i] >= primes[i]) { sum[i] -= primes[i]; sum[i+1]++; } if(sum[count+1]) count++; for(i=count; i>0; i--) printf("%d,", sum[i]); printf("%d\n", sum[0]); } return 0;}
其中,数组a、b和sum分别用于存储数A、数B和A+B(和)。

需要注意的是,读入的数据从左到右是从高位到低位。然而,进行计算时,需要从低位到高位进行计算,以便于有进位时进行进位计算。

转载于:https://www.cnblogs.com/tigerisland/p/7564820.html

你可能感兴趣的文章
我的代码观——关于ACM编程风格与librazy网友的对话
查看>>
Linux 总结2
查看>>
mysql C++ 使用
查看>>
android程序监听home键与电源键
查看>>
iOS中使用 Reachability 检测网络
查看>>
现场故障-数据量超出plsql developer结果集导致应用程序无数据现象
查看>>
Android -- sqlite数据库随apk发布
查看>>
JQuery操作表单相关使用总结
查看>>
将markdown格式转化为bootstrap风格html
查看>>
CSS3 Transitions属性打造动画的下载按钮特效
查看>>
eclipse 快捷键
查看>>
js常用的事件对象
查看>>
SharePoint 2013 禁用搜索服务
查看>>
[原]一个针对LVS的压力测试报告
查看>>
拥塞控制和流量控制
查看>>
[LeetCode] Sum Root to Leaf Numbers
查看>>
IO设计模式:Reactor和Proactor对比
查看>>
Qt Widgets——动作类与小部件菜单项
查看>>
ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互
查看>>
[转]动态规划解最长公共子序列问题
查看>>