【模版】大数乘法、加法模版

2024-08-22 14:38
文章标签 大数 模版 乘法 加法

本文主要是介绍【模版】大数乘法、加法模版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

啦啦啦,模版终于写出来了,以后大数的乘加法再也不担心了。

介于只对自己的个别数据进行了测试,所以还是把模版晒出来吧,大家一起试试,有问题一定要第一时间反馈啊!!

还有,那些逃避指针的小伙伴们,咳咳,我就不说什么了,反正打死你们也不相信我没用指针。

 

//大数问题之大数(250位)乘法、加法模版
#include<stdio.h>
#include<string.h>void hs(char *s,long long *n); //由字符串变为整形数组
void pr(long long *n,int num); //打印整形数组(大数)char sn1[260];     //输入第一个大数
char sn2[260];     //输入第二个大数
long long n1[70];  //保存第一个大数
long long n2[70];  //保存第二个大数
long long en[150]; //保存最后结果int main()
{int i,k;while (~scanf ("%s%s",sn1,sn2)){//乘法特殊情况if (sn1[0] == '0' || sn2[0] == '0'){printf ("0\n");continue;}//初始化memset (n1,0,sizeof n1);memset (n2,0,sizeof n2);memset (en,0,sizeof en);//把字符串转化为整形数组hs (sn1,n1);hs (sn2,n2);//计算//乘法for (i = 69;i >= 0;i--)for (k = 69;k  >= 0;k--){en[i + k + 1] += n1[i] * n2[k];}//加法for(i = 69;i >= 0;i--)en[i + 70] = n1[i] + n2[i];//把结果标准化//乘法&加法for (i = 139;i >= 0;i--){if (en[i] >= 10000){en[i - 1] += (long long)(en[i] / 10000);en[i] = en[i] % 10000;}}//打印结果pr(en,140);}return 0;
}void hs(char *s,long long *n)
{char *ps = s + strlen(s) - 1;char *tmp = NULL;long long *pn = &n[69];long long tim = 3;while (ps >= s){if ((ps - 3) >= s){while(tim >= 0){*pn = (*pn) * 10 + (*(ps - tim) - '0');tim--;}pn--;tim = 3;}else{tmp = s;while (tmp <= ps){*pn = *pn * 10 + (*tmp - '0');tmp++;}}ps -= 4;}
}void pr(long long *n,int num)
{long long *p = n;while (*p == 0)p++;//第一个数一定要特殊处理if (p > &n[num - 1]){printf ("0\n");}else{printf ("%lld",*p);p++;while (p <= &n[num - 1]){printf ("%04lld",*p);p++;}printf ("\n");}
}


 

这篇关于【模版】大数乘法、加法模版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096562

相关文章

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

FHQ Treap模版(luogu P3369)

FHQ Treap模版(自用),带注释 #include<bits/stdc++.h>using namespace std;const int N=1e5+10;int n,root,idx;struct node{int l,r;int val,key,size;}tr[N];int getnew(int v){tr[++idx].val=v;//权值tr[idx].key=rand(

高精度加法,乘法,阶乘

#include <iostream>#include <map>#include <string>#include <algorithm>using namespace std;const int Max = 50000;string str1,str2;/***********乘法***********/void chenfa(){cin >> str1>>str2;int a

找第K大数(ACdream 1099)

瑶瑶的第K大 Time Limit: 4000/2000MS (Java/Others)  Memory Limit: 256000/128000KB (Java/Others) Submit  Statistic  Next Problem Problem Description 一天,萌萌的妹子--瑶瑶(tsyao)很无聊,就来找你玩。可是你们都不知道玩什么。。。

【OpenCV2.2】图像的算术与位运算(图像的加法运算、图像的减法运算、图像的融合)、OpenCV的位运算(非操作、与运算、或和异或)

1 图像的算术运算 1.1 图像的加法运算 1.2 图像的减法运算 1.3 图像的融合 2 OpenCV的位运算 2.1 非操作 2.2 与运算 2.3 或和异或 1 图像的算术运算 1.1 图像的加法运算 add opencv使用add来执行图像的加法运算 图片就是矩阵, 图片的加法运算就是矩阵的加法运算, 这就要求加法运算的两张图shape必须是相同的. # 图片加法imp

乘法问题c++

题目描述 小 A 最近刚刚学习了乘法,为了帮助他练习,我们给他若干个正整数,并要求他将这些数乘起来。 对于大部分题目,小 A 可以精准地算出答案,不过,如果这些数的乘积超过 ,小 A 就不会做了。 请你写一个程序,告诉我们小 A 会如何作答。 输入 第一行一个整数 n,表示正整数的个数。 接下来 n行,每行一个整数a 。小 A 需要将所有的 a乘起来。 保证n<=50,a<=100. 输出