[编程题]大数的运算

题目:输入某个数,计算它乘以2的结果

#include <iostream>
#include <string>
#pragma warning(disable : 4996)
using namespace std;

string multiply2(string &str) {
    int len = str.size();
    if (len == 0) return "0";
string result = str;

    int location = len - 1; //从最后一位开始计算
    int locationSum = 0;    //当前位置的数相加的结果
    int carry = 0;          //进位
    int curr = 0;           //计算后该位的实际值
    char buffer[2];

    while (location >= 0) {
        if (str[location] >= ‘0‘ && str[location] <= ‘9‘) {

            locationSum = (str[location] - ‘0‘) * 2  + carry;

            if (locationSum > 9) {
                curr = locationSum - 10;
                itoa(curr, buffer, 10);
                result[location] = buffer[0];
                carry = 1;
            }
            else {
                curr = locationSum;
                itoa(curr, buffer, 10);
                result[location] = buffer[0];
                carry = 0;
            }
        }
        else { //输入不合法
            cerr << "invalid input" << endl;
            return "0";
        }

        location--;
    }

    if (carry == 1) {
        string big = "1"; //最终的进位
        result = big + result;
    }

    return result;

}

int main() {
    string a;
    getline(cin, a);
    string b = multiply2(a);    cout << b << endl;     return 0; }

原文地址:https://www.cnblogs.com/wqpkita/p/9610219.html

时间: 2024-10-17 08:23:56

[编程题]大数的运算的相关文章

编程题:自增运算与自减运算的运用

#include<stdio.h> void main() {int a1,a2,a3,a4,b1,b2,b3,b4; a1=a2=a3=a4=10; b1=(a1++)+(a1++)+(a1++); b2=(++a2)+(++a2)+(++a2); b3=(a3--)+(a3--)+(a3--); b4=(--a4)+(--a4)+(--a4); printf("a1=%d,a2=%d,b1=%d,b2=%d\n",a1,a2,b1,b2); printf("a

上机操作编程题

一.写一个简单的缓存系统 1 package com.wisezone.demo; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 /** 6 * 上机操作: 7 * 面试题--写一个简单的缓存系统 8 * @author 王东海 9 * @2017年6月5日 10 */ 11 public class CacheDemo 12 { 13 private Map<String, Object> map = new HashMap&

POJ C程序设计进阶 编程题#3:运算符判定

编程题#3:运算符判定 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 两个整数 a 和 b 运算后得到结果 c.表示为:a ? b = c,其中,?可能是加法 +,减法 -,乘法 *,整除 / 或 取余 %.请根据输入的 a,b,c 的值,确定运算符.如果某种运算成立,则输出相应的运算符,如果任何运算都不成立,则输出 error. 例如: 输入: 3,4,5 输出: er

hdu4927 Series 1(组合+公式 Java大数高精度运算)

题目链接: Series 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 423    Accepted Submission(s): 146 Problem Description Let A be an integral series {A1, A2, . . . , An}. The zero-order series o

编程题集

编程题集 ps: 如题目有错请及时反馈 2015/7/10    scanf.printf的基本用法.变量的定义和使用.C语言的各种运算符 ------------------------------------------------------------------------------------- 程序篇: #1编写一个程序,输出 "Hello World" . #2编写一个程序,实现简单的加减乘除运算. #3让用户输入两个整数,然后调换位置后输出. #4输入年,月,日,把

小米2015笔试编程题

小米2015笔试编程题 1.[编程题] 懂二进制 时间限制:1秒 空间限制:32768K 世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子1: 1999  2299 输出例子1: 7 分析:第一步求这两个数的异或,得到一个新的数,相同位是0,不同位是1:第二步采用位运算求这个数里边1的个数即为结果 1 class Solution { 2 public: 3 /** 4 * 获得两个整形二进制表达位数不同的数量 5

2017年腾讯 秋招软件开发笔试编程题回忆版

2017年腾讯秋招软件开发笔试编程题回忆版 (所有题目大致描述如下,并非完整的题目回忆,但意思大致一样) 1.又一个魔法城市,城市里面有n个魔法城堡,序号为0,1,2...n-1:魔法城堡之间都有路径相连:魔法城堡两两之间的到达的距离不同,因此所需时间也可能不会相同.如魔法城堡0到魔法城堡2需要耗时4小时:现,小明想从魔法城堡0到魔法城堡1,他想知道需要花费多少时间:为了快速到达,有一魔法扫把,魔法扫把使用次数有限,使用一次,可以将某一段间的时间减半:求小明从魔法城堡0到魔法城堡1花费的最小时间

50道经典的JAVA编程题(目录)

50道经典的JAVA编程题(目录) 题目来源于:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html [程序1] TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... [程序2] FindPrimeNumber.java 题目:判断101-20

面向对象程序设计编程题完善1.0

题目如下: 编程题(请使用C语言或者C++完成以下题目):(基础5分) 中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天.我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言? 汉字真的不能编程吗?最近文言文编程火了一把,吾有一數.曰三.名之曰「甲」.这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩. 今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他. 编程要求 编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果. 变量定义:整数