c++ u7-02-高精度乘法

news/2024/10/5 14:08:20/文章来源:https://www.cnblogs.com/jayxuan/p/18287673

本节课作业:

链接:https://pan.baidu.com/s/13-FC86jSHGziRDA8lqzimg?pwd=owv1
提取码:owv1

 

 

 

高精度乘法

 

 

 

 

 

 

 

 

 

 

 

   

 

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string x , y;
int a[50010] , b[50010] , c[50010];
int main()
{cin >> x >> y;int l1=x.size() , l2 = y.size();for(int i = 1 ; i <= l1 ; i++){a[i] = x[l1-i]-'0';    }for(int i = 1 ; i <= l2 ; i++){b[i] = y[l2-i]-'0';    }for(int i = 1 ; i <= l1 ; i++){for(int j = 1 ; j <= l2 ; j++){c[i+j-1] += a[i] * b[j];}}int l = l1 + l2;for(int i = 1 ; i <= l - 1 ; ++i){if(c[i] > 9){c[i+1] += c[i] / 10;c[i] %= 10;    }}while(c[l] == 0 && l > 1){l--;    }for(int i = l ; i >= 1 ; i--){cout << c[i];    }return 0;
} 
View Code

 

 

 

#include<bits/stdc++.h>  
using namespace std;  // 初始化两个数组,mul用于存储每一步的乘积,add用于存储乘积的各位数字之和的累积和  
int mul[10010] = {1}, add[10010];  int main(){  int n, l = 2; // n是输入的数字,l是当前mul数组的长度(包括预留空间)  cin >> n; // 读取n的值  // 外层循环:从1乘到n  for(int i = 1; i <= n; i++){  // 内层循环1:计算当前的乘积  for(int j = 0; j < l; j++){  mul[j] *= i; // 将当前索引的值乘以i  
        }  // 更新l的值,为可能的进位预留空间  // 注意:这里简单地将l增加2可能不是最优的,但在这个例子中足够了  l += 2;  // 内层循环2:处理进位  for(int j = 0; j < l; j++){  // 将当前位的进位加到下一位  mul[j + 1] += mul[j] / 10;  // 更新当前位的值(去掉进位)  mul[j] %= 10;  }  // 初始化add数组的这一轮计算(理论上这一步不是必需的,因为add数组会被累加)  // 但为了清晰起见,可以在这里明确设置add数组的前l位为0(尽管它们可能已经是0了)  // 内层循环3:计算当前乘积的各位数字之和,并累加到add数组上  for(int j = 0; j < l; j++){  add[j] += mul[j]; // 将mul数组的当前位加到add数组的对应位上  // 处理add数组的进位  add[j + 1] += add[j] / 10;  add[j] %= 10; // 更新add数组的当前位(去掉进位)  
        }  // 注意:这里我们不需要重置mul数组或l的值,因为它们是累积计算的  
    }  // 找到add数组中最后一个非零元素的索引  int idx = l - 1; // 从最后一个元素开始检查  while(idx >= 0 && add[idx] == 0) idx--;  // 输出结果  // 从idx开始,逆序输出add数组中的元素  for(int i = idx; i >= 0; i--) cout << add[i];  cout << endl; // 可选:在输出结束后添加换行符  return 0;  
}
View Code

 

 

 

高精度除法   高精度除低精度

 

 

 

 

 

 

 

 

#include <iostream>
using namespace std;
int a[10010], b, c[10010];int main() {string s1;cin >> s1 >> b;int l1 = s1.size();for (int i = 0; i < l1; i++)a[i] = s1[i] - '0';long long r = 0;for (int i = 0; i < l1; i++) {r = a[i] + r * 10;c[i] = r / b;r %= b;}int len = 0;while(!c[len]){len++;        }    for (int i = len; i < l1; i++){cout << c[i];    }    cout << endl << r;    return 0;
}
View Code

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/739499.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node-red的基本指令

1. inject->debug输入到输出,调试结果在右边如果选择时间戳的话,可以选择立即执行,或者周期性,持续执行inject除了时间戳还有一些其他输入项可以选择inject选择json文件输出写好json文件之后点击格式化json,可以校对文件格式payload.number可以让输出只输出number的内容…

lombokjunit

lombok&junit 1 lombok先去官网或者maven仓库下载jar包https://mvnrepository.com/导入第三方包到项目中右键lib文件夹,点击add as library默认jvm不解析第三方注解,需要手动开启使用//@Setter // 生成set方法 1 //@Getter // 生成get方法 2 //@ToString // 生…

日期类异常类

日期类&异常类 作业:千位数字相乘 public static void main(String[] args) {// 两个千位数字相乘int[] arr1 = {7,8,9,9,8,9};int[] arr2 = {7,9,8,9,6,8};// 定义结果的数组int[] result = new int[12];for (int i = 0; i < arr1.length; i++) {for (int j = 0; j <…

包装类数学类位运算

包装类&数学类&位运算 1 包装类 把基本数据类型包装成引用数据类型byte short int long float double char boolean voidByte Short Integer Long Float Double Character Boolean VoidVoidVoid类构造方法是私有的,所以不能创建对象。并且Void是一个最终类,没有子类。…

EtherCAT转Profinet网关配置说明第二讲:上位机软件配置

EtherCAT协议转Profinet协议网关模块(XD-ECPNS20),不仅可以实现数据之间的通信,还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块(XD-ECPNS20)具有高速传输的特点,因此通过EtherCAT转Profinet网关实现数据传输和控制时速度的提升。在大规模的工业…

2024.7.6 鲜花

梅菲斯特——女王蜂 from K8He ラストチャンスに飢えたつま先が 踊り出すまま駆けたこの夜空 並のスタンスじゃ靡かない 星は宝石の憧れ 浮かぶ涙と汗は血の名残り 目の中でしか泳げなきゃ芝居 だけどステージが逃がさない いついつまでも憧れ 焦がれているよ I’ve never see…

C#学习笔记-事件

事件事件是类的一种成员,能够使类或对象具备通知能力。事件用于对象或类间的动作协调和信息传递。假设类A有某个事件,当这个事件发生时,类A会通知并传递事件参数(可选)给有订阅这个事件的类B,类B根据拿到的事件信息对事件进行响应处理。 事件模型 事件模型的5个组成部分:…

将nodejs迁移到D盘

参考双击安装,指定d盘查看文件夹查看环境变量,自动添加如下Path=D:\software\nodejs\打开cmd验证C:\Users\dogle>node -v v18.14.2C:\Users\dogle>npm -v 9.5.0C:\Users\dogle>echo %PATH% C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\sy…

bluez 入门

**核心模块**:位于系统的最底层,直接与蓝牙硬件进行交互。核心模块实现了蓝牙的基础协议如HCI (Host Controller Interface),并通过DBUS提供API给上层应用。 **服务守护进程(bluetoothd)**:作为系统的守护进程运行,它处理所有的蓝牙服务和配置,如设备配对、连接管理、配…

chrome 浏览器如何设置不保存表单信息

chrome 浏览器如何设置不保存表单信息如何关闭表单自动填充(测试环境Chrome浏览器) https://download.csdn.net/blog/column/7594878/100576004如何禁用谷歌浏览器中的表单自动填充功能? https://zh-cn.fairsyndication.com/222-how-to-disable-form-autofill-in-google-chr…

数字设计--CDC

异步信号与同步信号 同步信号 频率相同,相位相同的两个信号 频率相同,相位差一定的两个信号 不同频率的两个信号也可能是同步的,比如分频出来的两个信号 异步信号 频率不同的两个信号 频率相同但相位差不定的两个信号 跨时钟域就是要解决信号从异步信号之间传输的问题。 亚稳…

数字设计--亚稳态

亚稳态 FPGA 等数字设备中的所有寄存器都定义了信号时序要求----允许每个寄存器在其输入端正确捕获数据并产生输出信号。为确保可靠操作,寄存器的输入必须在时钟边沿之前的最短时间(建立时间 setup time 或 \(t_{su}\))和时钟边沿之后的最短时间(保持时间 hold time 或 \(t…