当前位置: 首页 > news >正文

HDU1230 火星A+B【进制】

问题链接:HDU1230 火星A+B。

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

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

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

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

程序说明(略)。


AC的C语言程序如下:

/* HDU1230 火星A+B */

#include <stdio.h>
#include <memory.h>

#define MAXN    30

int 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

相关文章:

  • tomcat下server.xml配置详解
  • BZOJ 2599 Race(树分治)
  • BI报表帮你轻松自如完成数据分析、业务数据探查
  • 第二次冲刺第二天
  • LintCode_389 判断数独是否合法
  • Android开发常见错误及技巧
  • 使用Markdown写文档
  • 普通pc安装懒人版的mac 10.10系统安装
  • mybatis-generator 基类继承
  • Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
  • 神奇的Android Studio Template
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • mysqldump 数据库备份
  • iOS App 启动页
  • 自己动手写RTP服务器——关于RTP协议
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • CentOS 7 防火墙操作
  • Java Agent 学习笔记
  • Java多线程(4):使用线程池执行定时任务
  • Java深入 - 深入理解Java集合
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • SpriteKit 技巧之添加背景图片
  • 和 || 运算
  • 计算机在识别图像时“看到”了什么?
  • 前端临床手札——文件上传
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 中文输入法与React文本输入框的问题与解决方案
  • 阿里云ACE认证之理解CDN技术
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​第20课 在Android Native开发中加入新的C++类
  • ​批处理文件中的errorlevel用法
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (js)循环条件满足时终止循环
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (区间dp) (经典例题) 石子合并
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET MVC第三章、三种传值方式
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .Net Winform开发笔记(一)
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NetCore部署微服务(二)
  • .NET中 MVC 工厂模式浅析
  • /3GB和/USERVA开关
  • @Autowired 与@Resource的区别
  • @NestedConfigurationProperty 注解用法
  • @SpringBootApplication 包含的三个注解及其含义
  • @TableLogic注解说明,以及对增删改查的影响
  • [Angular 基础] - 表单:响应式表单
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [CodeForces-759D]Bacterial Melee
  • [Deepin 15] 编译安装 MySQL-5.6.35