c语言大整数运算,C语言大数乘法

  c语言大整数运算,C语言大数乘法

  1.乘法定律:一个数的第I位乘以另一个数的第j位会累加到结果的第j位,结果的数组会为每个数组元素保存2位。最后,携带结果并打印出来。

  注意:乘法运算后的位数k不会超过m n。

  乘法步骤如下:

  数组A存储一个数,数组B存储一个数,这个数乘以位放入数组c。

  c语言代码:(时间复杂度小于O (n),分治法,错位加法)# includesdio.h

  #包含数学. h

  #包含字符串. h

  #定义M 10000

  char s1[M],s2[M],s[M];

  int a[M],b[M],c[M];

  int main(){

  int i,j,m,n,k;

  scanf(%s%s ,s1,S2);

  memset(c,0,sizeof(c));

  n=strlen(S1);

  m=strlen(S2);

  k=nm;//保证相乘后的位数不会大于k。

  printf( S1=% d S2=% d \ n 的长度,n,m);

  /*用数字将字符串s1和s2按相反顺序排列*/

  for(I=0;I n;我)

  a[I]=S1[n-I-1]- 0 ;

  for(I=0;我是m;我)

  b[I]=S2[m-1-I]- 0 ;

  /*乘法*/

  for(I=0;I n;我)

  for(j=0;j m;j)

  c[I j]=a[I]* b[j];

  for(I=0;I=k;i ){

  if(c[i]=10){

  c[I 1]=c[I 1]c[I]/10;

  c[i]=c[i];

  }

  }

  /*删除前导0*/

  I=k;

  while(c[I]==0)I-;

  /*判断两个非负数的乘积是否为0,打印c[]*/

  如果(i 0){

  printf(“0”);

  }

  否则{

  for(;I=0;我-)

  printf(%d ,c[I]);

  }

  printf( \ n );

  返回0;

  }代码操作和计算结果如下:

  Java语言:导入Java . util . scanner;

  公共类BigDecimal {

  //输入两个超大整数作为字符串,计算两个值相乘的结果。

  公共静态void main(String[] args) {

  Scanner in=新扫描仪(system . in);

  string a=in . next();

  string b=in . next();

  字符串结果=multiply(a,b);

  System.out.println(结果);

  }

  //计算两个整数的乘积

  私有静态字符串乘法(字符串a,字符串b) {

  //用于存储结果

  StringBuilder ans=new StringBuilder();

  //反转两个大整数,使它们可以从位相乘。

  StringBuilder a1=新的StringBuilder(a);

  StringBuilder B1=new StringBuilder(b);

  a1 . reverse();

  B1 . reverse();

  //用于存储中间计算的结果

  int[]arr=new int[a1 . length()B1 . length()];

  //开始乘法,从两个大整数的位开始,也就是求逆后的第一位。

  for(int I=0;I a1 . length();i ){

  //B的每一位是A的第I位的乘积,每个周期乘以B的每一位一次,A移动一位。

  for(int j=0;j B1 . length();j ){

  //这就构成了一个错位加法,它保存了结果中每一位的累积和。这里,数字的字符减去字符“0”等于数字本身。

  arr[I j]=(a1 . charat(I)- 0 )*(B1 . charat(j)- 0 );

  }

  }

  //给每个位一个大于10的进位,保留余数

  for(int I=0;I arr . length-1;i ){

  arr[I 1]=arr[I]/10;

  arr[I]%=10;

  }

  //将结果放入答案集中。

  for(int I=0;I arr . length-1;i ){

  ans . append(arr[I]);

  }

  return ans.reverse()。toString();

  }

  }代码思路和C语言基本一致。

  计算结果如下:

  Python语言:因为python有一个无限精度的int类型,所以用python实现大整数乘法是没有意义的,但是思路是一样的。

  我是刚刚的同学,刚入网的小白。()

  (疯狂的暗示喜欢!注意了!前进!喜欢!注意了!前进!)

  你的支持是你同学前进的最大动力!

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: