发布网友 发布时间:2022-04-25 16:50
共5个回答
热心网友 时间:2023-10-20 03:22
有一个很神奇的类型是__int128这个可以应该可以实现你的想法,
讲道理的话,编译器的gcc是不支持__int128这种数据类型的,比如在codeblocks 16.01/Dev C++是无法编译的,但是提交到大部分OJ上是可以编译且能用的。C/C++标准。IO是不认识__int128这种数据类型的,因此要自己实现IO,其他的运算,与int没有什么不同。
但是官方上写了GCC提供了两种128位整数类型,分别是__int128_t和__uint128_t,分别用于声明有符号整数变量和无符号整数变量。
由于这种大整数无法使用函数printf()输出其值,所以自己做了一个整数转字符串函数write(),用于实现128位整数的输出。
亲测oj和洛谷可以AC
加法模板如下
#include <bits/stdc++.h>热心网友 时间:2023-10-20 03:23
其实就是把你自己列竖式计算四则运算的过程翻译成代码就好。效率低一点的话就把10进制的每一位数码弄成一个int,然后按照竖式运算来计算;效率高一点就把一个unsigned int看成一位数码,整个整数看做“4294967296进制”,运算道理一样追问能详细一点吗 如果进位怎么办 就说说加法吧
热心网友 时间:2023-10-20 03:23
如果你有耐心的话,可以尝试用数组实现加减乘除运算,这样可以保证很大程度上的精度
热心网友 时间:2023-10-20 03:24
1、在C语言中,并没有任何数据类型可以表示精确的128位数。所以要表示128位数,就必须用数组模拟。比如,用字符数组模拟,每位字符表示一位数,使用'0'~'9'表示各个位上的数值。
2、例如
char num[129] = "12345678";
表示数字12345678。 由于128位过长,就不举128位的例子了。
输入输出均可以用字符串的方式。
另外,做计算的话,就必须自己写函数了,如加减乘除模除等,对于这类实现,在算法中称为大数计算,如果需要,可以对此进行搜索,有很多优秀算法。
热心网友 时间:2023-10-20 03:24
没明白意思,是整数的加减乘除的运算吗?