问题来源

  http://ac.jobdu.com/problem.php?pid=1016

问题描述

  每次输入两个数,不同数位之间用逗号隔开,其中,第n位的进制就是第n个素数,即个位数是2进制的,十位数是3进制的,百位数是5进制的,千位数是7进制的...

问题分析

  先把样例整明白,2=1*2+0*1(二进制),38=1*(5*3*2*1)+1*(3*2*1)+1*(2*1)+0*1。

  其实知道上面的原理对解题并没有什么帮助,我们只要知道,对应数位的数字相加,超过了进制就进位就可以了。所以第一步,先把两个数各个数位上的数算出来,注意某些数位上的数有可能大于10。第二步,把对应数位上的数相加,并与其进制比较,大于等于的话就进位,最后可得到答案。

  下列的参考代码可能有点不好理解,因为我没有把AB两个数翻过来,原因是懒qwq。道理其实一样,进位每次最多只能进一位。

参考代码

//
// Created by AlvinZH on 2017/5/24.
// Copyright (c) AlvinZH. All rights reserved.
// #include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std; const int Prime[]={,,,,,,,,,,,,,,,,,,,,,,,,,}; int main()
{
string s1,s2;
int num1[],num2[],ans[];
while(cin>>s1>>s2)
{
if(s1==""&&s2=="") break;
memset(num1,, sizeof(num1));
memset(num2,, sizeof(num2));
memset(ans,, sizeof(ans));
int index1=;
for(int i=;i<s1.length();i++)
{
if(s1[i]!=',')
{
num1[index1]=num1[index1]*+(s1[i]-'');
}
else index1++;
}
int index2=;
for(int i=;i<s2.length();i++)
{
if(s2[i]!=',')
{
num2[index2]=num2[index2]*+(s2[i]-'');
}
else index2++;
}
//for(int i=1;i<=index1;i++) cout<<num1[i]<<endl;
//for(int i=1;i<=index2;i++) cout<<num2[i]<<endl;
int index=max(index1,index2);
for(int i=index;i>;i--)
{
ans[i]=ans[i]+num1[index1]+num2[index2];
while(ans[i]>=Prime[index-i])
{
ans[i]-=Prime[index-i];
ans[i-]++;
}
if(index1>)
index1--;
if(index2>)
index2--;
}
if(ans[]!=) cout<<ans[]<<",";
for(int i=;i<index;i++)
cout<<ans[i]<<",";
cout<<ans[index]<<endl;
}
}
/**************************************************************
Problem: 1016
User: Pacsiy
Language: C++
Result: Accepted
Time:10 ms
Memory:1520 kb
****************************************************************/

作者: AlvinZH

出处: http://www.cnblogs.com/AlvinZH/

本人Github:https://github.com/Pacsiy/JobDu

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

题目1016:火星A+B(字符串拆分)的更多相关文章

  1. 题目1010:A + B(字符串拆分)

    问题来源 http://ac.jobdu.com/problem.php?pid=1010 问题描述 给我们一行标准的字符串,整行读入之后,把它拆开转换成数字进行计算. 问题分析 首先考虑一个问题:如 ...

  2. 题目1016:火星A+B(进制新问题)

    题目链接:http://ac.jobdu.com/problem.php?pid=1016 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  3. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理

    一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...

  4. SQL2000/2005字符串拆分为列表通用函数

    ------------------------------------------------------------------ --  Author : htl258(Tony) --  Dat ...

  5. sql之cursor的简介和字符串拆分(split)与游标的使用

     字符串拆分(split)与游标的使用 CREATE TABLE Plates ( ,), ) NOT NULL, [BusinessId] INT NOT NULL, ) ),),), SELECT ...

  6. SQL 字符串拆分

    字符串拆分: ALTER FUNCTION [dbo].[f_Split](@sText nvarchar(max),@split NVARCHAR(20)) RETURNS @t TABLE (id ...

  7. php将长字符串拆分为指定最大宽度的字符串数组

    /** * 将字符串拆分为指定最大宽度的字符串数组.单字节字符宽度为1,多字节字符通常宽度为2 * @param string $msg 要拆分的字符串 * @param int $width 结果数 ...

  8. 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格

    1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...

  9. Java字符串拆分和字符串连接

    Java字符串拆分/连接 public class LierString{ //------------------------------------------------------------ ...

  10. java解析字符串拆分单独元素

    有时候,需求要求传递多个字符串参数,但是方法参数已经固定为单个String,笔者在学习unity和android之间的消息传递时就遇到这个问题,所以就写了这么一个解析字符串拆分单独元素的方法. 示例: ...

随机推荐

  1. Anaconda3 ubuntu18.04

    luo@luo-All-Series:~/MyFile/Anaconda3$ luo@luo-All-Series:~/MyFile/Anaconda3$ luo@luo-All-Series:~/M ...

  2. Opencv轮廓计数(学习)

    #include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/xfeatures2d.hpp> ...

  3. C primer 编程练习 (不断更新)

    目前在看<C Primer>,以后会经常在这篇博客里更新课后的编程练习题 第二章:编程练习 2.1 #include <stdio.h> int main(void) { pr ...

  4. Spring Boot利用poi导出Excel

    至于poi的用法就不多说了,网上多得很,但是发现spring boot结合poi的就不多了,而且大多也有各种各样的问题. public class ExcelData implements Seria ...

  5. kubernetes使用ceph

    一.有一个ceph cluster,假设已经准备好了,文档网上一大堆 二.开始集成ceph和kuberntes 2.1 禁用rbd features rbd image有4个 features,lay ...

  6. Transferring Data Between ASP.NET Web Pages

    14 July 2012 20:24 http://www.mikesdotnetting.com/article/192/transferring-data-between-asp-net-web- ...

  7. HDU 4756 Install Air Conditioning (MST+树形DP)

    题意:n-1个宿舍,1个供电站,n个位置每两个位置都有边相连,其中有一条边不能连,求n个位置连通的最小花费的最大值. 析:因为要连通,还要权值最小,所以就是MST了,然后就是改变一条边,然后去找出改变 ...

  8. JS 观察者模式

    Events = function() { var listen, log, obj, one, remove, trigger, __this; obj = {}; __this = this; l ...

  9. 我的CSS3学习笔记

    1.元字符使用: []: 全部可选项 ||:并列 |:多选一 ?: 0个或者一个 *:0个或者多个 {}: 范围 2.CSS3属性选择器: E[attr]:存在attr属性即可: E[attr=val ...

  10. 初涉Runtime (一)

    Objective-C 是一门动态语言,有很多东西都是运行时才确定的. 比如这句代码首先声明testObject是一个NSString,然后创建了一个NSData对象,并且将这个对象的内存地址保存在t ...