问题来源

  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. 14-python登入教务网(python+bs4)

    用request先得到到session对象,用其去放送请求,会自动保存cookie. 模拟有验证码的登入步骤: 1.发送请求登入页面: 2.分析验证码的地址,以及要将登入请求发往的地址(可以先输入错的 ...

  2. TTF字体基本知识及其在QT中的应用

    字体类型 以Windows为例,有4种字体技术: Raster:光栅型,就是用位图来绘制字形(glyph),每个字都以位图形式保存 Vector:矢量型,就是用一系列直线的结束点来表示字形 TrueT ...

  3. Checked异常和Runtime异常体系

    Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常).所有的RuntimeException类及其子类的实例被称为Runtime异常:不是RuntimeException类 ...

  4. [C++] Template Function _ Any number of parameters

    Template Function _ Any number of parameters #include<iostream> #include<cstdarg> using ...

  5. 冲刺NOIP2015提高组复赛模拟试题(五) 3.破坏基地

    3.破坏基地 描述 Description 在Z国和W国之间一直战火不断. 好不容易,W国的间谍把完整的Z国的军事基地的地图到手了. 于是W国决定再次出击,一举击破Z国的防线. W国认真研究了Z国的地 ...

  6. [转]Python-__builtin__与__builtins__的区别与关系(超详细,经典)

    在学习Python时,很多人会问到__builtin__.__builtins__和builtins之间有什么关系.百度或Google一下,有很 多答案,但是这些答案要么不准确,要么只说了一点点,并不 ...

  7. zigbee广播通信原理

    广播:可以理解成,发送模块发出数据,这个网络里的所有节点模块都可以拿到这个数据. 实验:终端模块以广播的形式发送出去,让协调器和路由器模块作为接收器收到数据并显示出来! 协调器模块作为接收模块: 和单 ...

  8. Web测试实践--Rec 3

    累计完成任务情况: 阶段内容 参与人 根据功能性分析得出结论 小梁 对被测系统进行功能性分析 小龙.小黄 进行用户调研 小熊 开会学习作业要求,取得共识 全体 注: 1."阶段内容" ...

  9. 1256 Anagram

    题目链接: http://poj.org/problem?id=1256 题意: 根据自定义的字典序: 'A'<'a'<'B'<'b'<...<'Z'<'z' 和输 ...

  10. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...