保研考研机试攻略:第四章——高精度问题

🍨🍨🍨这一章我们来重点看一些常见的高精度题型,只有一个问题,所以这次我们更新包括 python、java、C/C++解法等内容,希望能帮助大家更好地掌握计算机考研机试中所涉及到的高精度问题。

目录

[🧊🧊🧊4.1 python解法](#🧊🧊🧊4.1 python解法)

🥥练习题目:

[DreamJudge 1474 大整数加法](#DreamJudge 1474 大整数加法)

[DreamJudge 1475 大整数乘法](#DreamJudge 1475 大整数乘法)

[🧊🧊🧊4.2 Java解法](#🧊🧊🧊4.2 Java解法)

[🧊🧊🧊4.3 C/C++解法](#🧊🧊🧊4.3 C/C++解法)


🧊🧊🧊4.1 python解法

如果你的考试院校支持用 python,那真是太好不过了。Python 真是超级棒的一门语言,虽然python 速度慢,但是那极其丰富的库和框架,再加上简洁的语法,真是美妙至极。

最重要的是,在 python 眼中就没有"大数"这个东西,直接上代码:

python 复制代码
while True:
    try:
        a, b = map(int, input().split())
        c = a+b
        print(c)
    except:
        break

Tips:使用 python 的同学可以关注这个专栏,后期更完所有的机试攻略后会更新python 笔记,敬请期待~

🥥练习题目:

DreamJudge 1474 大整数加法

python 复制代码
while True:
	try:
		a,b=map(int,input().split())
		c=a+b
		print(c)
	except:
		break

DreamJudge 1475 大整数乘法

python 复制代码
while True:
    try:
        n = input()
        a = input()
        b = input()
        a = int(a)
        b = int(b)
        print(a*b)
    except:
        break

🧊🧊🧊4.2 Java解法

基本上所有的 OJ 都支持 Java,可以使用 Java 来解决高精度的题目。

BigDecimal(表示浮点数)和 BigInteger(表示整数)加上 import java.math.*

java 复制代码
valueOf(parament); //将参数转换为指定类型
add(); //大数加法
substract(); //减法
multiply(); //乘法
divided(); //相除取整
remainder(); //取余
pow(); //a.pow(b) = a ^ b
gcd(); //最大公约数
abs(); //绝对值
negate(); //取反数
mod(); //a.mod(b) = a % b = a.remainder(b)
max(); min();
public int compareTo(); //比较
boolean equals(); //比较是否相等

参考代码:

java 复制代码
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sr=new Scanner(System.in);
        while (sr.hasNext()) {
            BigInteger a,b;
            a=sr.nextBigInteger();
            b=sr.nextBigInteger();
            System.out.println(a.add(b));
        }
    }
}

🧊🧊🧊4.3 C/C++解法

C/C++可以通过模拟的方法解决高精度的问题,但是不是特别建议考试的时候自己手动去模拟大整数的问题,这样很容易出现失误。当然,如果是很简单的加减法运算,用 C/C++模拟也是挺不错的。下面给出代码:

cpp 复制代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string Add(string a, string b) {
    //a 一直为位数较长的字符串
    if (a.length() < b.length()) a.swap(b);
    string result(a.length(), 0); //初步设置 result 长度为较长字符长度
    b.insert(0, a.length() - b.length(), '0'); //较短的字符串前面补零方便计算
    int carry = 0; //进位
    for (int i = a.length() - 1; i >= 0; i--) {
        int sum = (a[i] - 48) + (b[i] - 48) + carry;
        carry = sum / 10;
        result[i] = sum % 10 + 48;
    }
    //若进位不为 0,还要在前面补上进位
    if (carry != 0) {
        result.insert(result.begin(), carry + 48);
    }
    return result;
}

int main() {
    string a, b;
    while (cin >> a >> b)
        cout << Add(a, b) << endl;
    return 0;
}

高精度问题首推python解法!!!

创作不易,点个赞吧~点赞收藏不迷路,感兴趣的宝子们欢迎关注该专栏~

勤奋努力的宝子们,学习辛苦了!🌷🌷🌷休息下,我们下部分再见👋( •̀ ω •́ )✧~

相关推荐
Dumbness6 分钟前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
taka7 分钟前
从 24x 到 141x:我用纯 Python 零依赖项目,扒开了 GPU 加速的性能黑洞
算法
AI的探索之旅10 分钟前
97 个 OpenCV 实例(三十七):二维码识别,一张图四个码的陷阱
c++·opencv·计算机视觉
IT枫斗者枫哥11 分钟前
CompletableFuture失败后返回空列表:异常没了,业务含义也变了
java·后端
甜到心里的蛋糕12 分钟前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
张驰咨询公司15 分钟前
六西格玛Python DOE试验矩阵:3因子2水平生成与验算
python·六西格玛·实验设计·itertools·doe试验矩阵
江屿风22 分钟前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
知识搬运临时工22 分钟前
一个模板把 AEM 拖进 Full GC 死亡螺旋:300% CPU、7 GB 堆、310 万行堆栈
java·aws
用户4329359280526 分钟前
CoAP还是MQTT:1万只Cat.1水表三个月带宽续航实测
java
一只大鸽子28 分钟前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot