首页 > 高精

高精

今天模拟

考了一堆高精题

看到题目的一瞬间:awsl 物理意义上的

qaqqqqaqaqaqaqaqaqaqqq

然后强行刚题

首先是高精度加法

要先把短的补位0

然后。。没了

#include
#include
#define sev en
using namespace std;string s,t;string add(string str1,string str2) {string str;int len1 = str1.length();int len2 = str2.length();if(len1 < len2) {for(int i = 1; i <= len2-len1; i++)str1 = "0" + str1;} else {for(int i = 1; i <= len1 - len2; i++)str2 = "0" + str2;}len1 = str1.length();int cf = 0;int temp;for(int i = len1 - 1; i >= 0; i--) {temp = str1[i] - '0' + str2[i] - '0' + cf;cf=temp / 10;temp %= 10;str = char(temp + '0') + str;}if(cf != 0)  str = char(cf + '0') + str;return str;
}int main() {cin >> s >> t;cout << add(s,t);return 0;
}    
+

然后是高精度减法

先判断一下先输的数小还是后输的数小

提前输出负号

再用大的减小的

最后别忘了清空前导零

#include 
#include 
#include 
#include 
#define sev en
using namespace std; 
const int maxn = 10010; int len1, len2; 
int a[maxn], b[maxn]; 
string s1, s2;bool compare(string a, string b){if (a.size() < b.size()) return true;  if (a.size() > b.size()) return false;for (int i = 0; i < a.size(); ++i){if (a[i] > b[i]) return false;    if (b[i] > a[i]) return true; }return false;
}int main(){cin >> s1;         cin >> s2; if (compare(s1, s2)){swap(s1, s2);  printf("-"); }len1 = s1.size(); len2 = s2.size(); for (int i = 0; i < len1; ++i) a[len1 - i] = s1[i] - '0'; for (int i = 0; i < len2; ++i) b[len2 - i] = s2[i] - '0'; for (int i = 1; i <= len1; ++i){a[i] -= b[i];            if (a[i] < 0){                           a[i + 1]--;            a[i] += 10; }}while (a[len1] == 0 && len1 > 1) len1--; for (int i = len1; i >= 1; --i)          printf("%d", a[i]); return 0; 
}
-

然后是高精乘

记忆犹新,NOIP前考了一次,写跪了

是学长帮忙改的。。。整个改掉了emmmm

这次重写心理阴影巨大

写了好久www

但挺简单的。。。没啥可说

#include
#include
#define sev en
using namespace std;
#define N 100010char x[N],y[N];
int a[N],b[N],c[N << 1];int main() {
//    freopen("t.in","r",stdin);
//    freopen("t.out","w",stdout);scanf("%s",x);scanf("%s",y);a[0] = strlen(x),b[0] = strlen(y);for(int i = 1; i <= a[0]; i++)a[i] = x[a[0] - i] - '0';for(int i = 1; i <= b[0]; i++)b[i] = y[b[0] - i] - '0';for(int i = 1; i <= a[0]; i++)for(int j = 1; j <= b[0]; j++)c[i + j - 1] += a[i] * b[j];int len = a[0] + b[0];for(int i = 1; i <= len; i++)if(c[i] > 9) {c[i + 1] += c[i] / 10;c[i] %= 10;}while(c[len] == 0 && len > 1)len--;for(int i = len; i >= 1; i--)printf("%d",c[i]);return 0;
}
x

最后还有个阶乘

代码没有

等我到时候找找看吧www

转载于:https://www.cnblogs.com/sevenyuanluo/p/10706076.html

更多相关:

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...

  • 用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 第一种:使用for遍历循环嵌套for x in...

  • //很长一段时间我都只使用以下方式做数组循环,具体原因看数据 var aa = for (var i = 0, l = aa.length; i < l; i++) { var a = aa[i];} 数据采集图片来源于网友 很明显,for循环第二种方式完胜!!! 至于for in、forEach什么的,不知道甩他们多少...

  • 目录 1. Scene Graph Generation with External Knowledge and Image Reconstruction 2. Knowledge Acquisition for Visual Question Answering via Iterative Querying Author...

  • 基础题1: 输入一个正整数 n (1≤n≤10)和n 阶方阵a的元素,如果方阵a中的所有元素都沿主对角线对称,输出“Yes”, 否则,输出“No”。主对角线为从矩阵的左上角至右下角的连线,方阵a中的所有元素都沿主对角线对称指对所有i, k,a[i][k]和a[k][i]相等。输入输出示例如下: 输入: 3 1 2 3 4 5 6 7...

  • 程序流程控制 分支 顺序 循环 if switch&case 1 2 3 调整 break 1.6 前 switch(byte、short、char、int) 1.7 可放String 循环 while(次数不确定) do while for(确定次数) break(跳出本层循环) continue(跳出本次循环)     *   2...