【马蹄集】第二十四周——高精度计算专题

news2024/11/18 17:52:29

高精度计算专题



目录

  • MT2191 整数大小比较
  • MT2192 A+B problem
  • MT2193 A-B problem
  • MT2194 大斐列
  • MT2195 升级版斐波那契数列
  • MT2196 2的N次幂




MT2191 整数大小比较

难度:黄金    时间限制:1秒    占用内存:128M
题目描述

给出两个正整数,判断它们的大小。

格式

输入格式:两个正整数。
输出格式:若前者大,输出 >;若后者大,输出 <;若一样大,输出 =

样例 1

输入:1412894619244619891 23762842222

输出:>

备注

保证所有数在 2 100 2^{100} 2100 以内。


相关知识点:高精度计算


题解


虽然这道题是比较数字的大小,但实际上我们不用关心其数字的取值范围(可以从字符串对象的角度出发进行比较)。对于任意两个正整数,它们之间的大小关系可根据以下两步进行比较:

  1. 数字长度。对于正整数而言,显然长度越长的数更大。
  2. 若长度相等,则从数的最高位到最低位依次比较大小,在某位上具有更大数字的数更大。

若 1、2 之后未能找到更大的数,则说明这两个数的取值相同。

基于此,可直接写出求解该题的完整代码(已 AC):

/*
    MT2191 整数大小比较 
*/
#include<bits/stdc++.h> 
using namespace std;

// 比较两个大数的大小 
int compare(string stra, string strb)
{
    // 根据长度判断大小关系 
    int lenA = stra.length();
    int lenB = strb.length();
    if(lenA > lenB) return 1;
    if(lenA < lenB) return -1;
    // 长度相等需要进一步判断
    for(int i=0; i<lenA; i++){
        if(stra[i] - strb[i] > 0) return 1;
        if(stra[i] - strb[i] < 0) return -1;
    }
    // 或者直接比较字符串大小
    // if(stra > strb) return 1;
    // else if(stra < strb) return -1;
    // else return 
    return 0;
}

// 打印结果
void printResult(int result)
{
    if(result > 0) cout<<">"<<endl;
    else if(result < 0) cout<<"<"<<endl;
    else cout<<"="<<endl;
}

int main( )
{
    // 获取输入 
    string stra, strb;
    cin>>stra>>strb;
    // 比较两个大数的大小
    int result = compare(stra, strb);
    // 输出比较结果
    printResult(result);
    return 0;
} 



MT2192 A+B problem

难度:黄金    时间限制:1秒    占用内存:128M
题目描述

计算 A + B ( 1 ≤ A , B ≤ 10 10000 ) A+B(1\le A,B\le{10}^{10000}) A+B(1A,B1010000)

格式

输入格式:两行每行一个整数 A , B A,B A,B
输出格式:一个整数 A + B A+B A+B

样例 1

输入:

1
1

输出:

2


相关知识点: 高精度计算


题解


这道题考察的是大数运算(加法)。关于如何实现大数加法运算的分析请见博客 【算法与数据结构】——大数运算 。下面给出多位数加法的执行流程:

在这里插入图片描述

多位数加法的过程涉及到对各个位的加法运算,因此在处理大数的加法运算时,通常会用一个 int 型数组来存储大数在各个位上的值。例如,数:122333444455555666666,可通过一个足够长的数组 a r y [   ] ary[\ ] ary[ ] ,使 a r y [ 0 ] = 1 , a r y [ 1 ] = 2 , a r y [ 3 ] = 2 , … , a r y [ 20 ] = 6 ary\left[0\right]=1,ary\left[1\right]=2,ary\left[3\right]=2,\ldots,ary\left[20\right]=6 ary[0]=1,ary[1]=2,ary[3]=2,,ary[20]=6 进行存储。采取数位与索引大小相对应的存储方式(即数的低位对应较小的索引,高位对应较大的索引),是为了便于大数在执行加法运算时的进位可直接在数组中向后拓展。接下来,就能按照以上思路扫描数组并对各个位进行加法运算。最后,单独用一层循环处理进位即可。

下面直接给出求解本题的完整代码(已 AC):

/*
    MT2192 A+B problem 
*/
#include<bits/stdc++.h> 
using namespace std;

const int N = 1e4+5;
int numa[N], numb[N];

// 计算两个大数之和(输入为字符串) 
void getSum(string stra, string strb)
{
    // 赋初值
    memset(numa, 0, sizeof(numa));
    memset(numb, 0, sizeof(numb));
    int tmp = 0;
    // 将两个字符串保存至 int 型数组中(注意逆序) 
    for(int i=stra.length()-1; i>=0; i--)
        numa[tmp++] = stra[i] - '0';
    tmp = 0;
    for(int i=strb.length()-1; i>=0; i--)
        numb[tmp++] = strb[i] - '0';
    // 将数组中的每个数按位进行加法运算
    for(int i=0;i<N;i++)
        numa[i] += numb[i];
    // 对存放加法结果的数组执行进位处理
    for(int i=0; i<N; i++){
        numa[i+1] += numa[i] / 10;
        numa[i] %= 10;
    }
}

// 输出大数加法后的结果 
void printBigData()
{
    // 从最高位向后扫描,直到第 1 个非 0 数字出现 
    int p = N-1;
    while(numa[p] == 0) p--;
    while(p >= 0) cout<<numa[p--];
    cout<<"\n";
} 

int main( )
{
    // 获取输入 
    string stra, strb;
    cin>>stra>>strb;
    // 对两个大数进行加法运算 
    getSum(stra, strb);
    // 输出和
    printBigData();
    return 0;
} 


MT2193 A-B problem

难度:黄金    时间限制:1秒    占用内存:128M
题目描述

计算 A − B ( 1 ≤ B ≤ A ≤ 10 10000 ) A-B(1\le B\le A\le{10}^{10000}) AB(1BA1010000)

格式

输入格式:两行每行一个整数 A , B A,B A,B
输出格式:一个整数 A − B A-B AB

样例 1

输入:

2
1

输出:

1

相关知识点: 高精度计算


题解


这道题考察的是大数运算(减法)。关于如何实现大数减法运算的分析请见博客 【算法与数据结构】——大数运算 。下面给出多位数减法的执行流程:

在这里插入图片描述

多位数减法需要用到 int 型数组来存储大数在各个位上的值,其存储规则和大数加法一致(即低位对应较小的索引,高位对应较大的索引)。接下来,只需要扫描数组,在每个位上按照以上思路进行减法运算即可得到大数减法的结果。

下面直接给出求解本题的完整代码(已 AC):

/*
    MT2193 A-B problem 
*/
#include<bits/stdc++.h> 
using namespace std;

const int N = 1e4+5;
int numa[N], numb[N];

// 计算两个大数之差(输入为字符串) 
void getSub(string stra, string strb)
{
    // 赋初值
    memset(numa, 0, sizeof(numa));
    memset(numb, 0, sizeof(numb));
    int tmp = 0;
    // 将两个字符串保存至 int 型数组中(注意逆序) 
    for(int i=stra.length()-1; i>=0; i--)
        numa[tmp++] = stra[i] - '0';
    tmp = 0;
    for(int i=strb.length()-1; i>=0; i--)
        numb[tmp++] = strb[i] - '0';
    // 将数组中的每个数按位进行减法运算
    for(int i=0;i<N;i++){
        numa[i] -= numb[i];
        if(numa[i] < 0){
            // 借位 
            numa[i+1]--; 
            numa[i] += 10;
        }
    }
}

// 输出大数减法后的结果 
void printBigData()
{
    // 从最高位向后扫描,直到第 1 个非 0 数字出现 
    int p = N-1;
    while(numa[p] == 0) p--;
    while(p > -1) cout<<numa[p--];
    cout<<"\n";
} 

int main( )
{
    // 获取输入 
    string stra, strb;
    cin>>stra>>strb;
    // 对两个大数进行减法运算 
    getSub(stra, strb);
    // 输出和
    printBigData();
    return 0;
} 


MT2194 大斐列

难度:黄金    时间限制:1秒    占用内存:128M
题目描述

计算斐波那契数列第 n n n 项。
斐波那契数列定义为: F [ 1 ] = 1 , F [ 2 ] = 1 F[1] = 1,F[2] = 1 F[1]=1F[2]=1,递推关系为: F [ N ] = F [ N − 1 ] + F [ N − 2 ] F[N] = F[N-1] + F[N-2] F[N]=F[N1]+F[N2]。即: 1 、 1 、 2 、 3 、 5 、 8 、 13 、 21 、 34 、 … … 1、1、2、3、5、8、13、21、34、…… 112358132134……

格式

输入格式:一个整数 n n n
输出格式:一个整数 F [ n ] F[n] F[n]

样例 1

输入:6

输出:8

备注

对于 30% 的数据: 3 ≤ n ≤ 20 3≤n≤20 3n20
对于 100% 的数据: 3 ≤ n ≤ 5000 3≤n≤5000 3n5000


相关知识点:高精度计算


题解


这道题实际上就是求斐波那契数列:即通过迭代公式 F [ N ] = F [ N − 1 ] + F [ N − 2 ] F[N] = F[N-1] + F[N-2] F[N]=F[N1]+F[N2],不断获取下一个值。但是斐波那契数列的增长速度非常快,通过编写 Python 代码可知(代码如下),斐波那契数列的第 5000 个数的长度达到了 1045。因此这道题是一道妥妥的大数加法问题。

# 求斐波那契的第 5000 项
ary = [1,1]
for i in range(2,5000):
    ary.append(ary[i-1]+ary[i-2])
print(ary[4999])
print(len(str(ary[4999])))

Python 求解斐波那契数列

所以这里依然需要用到大数加法。具体的实现方式和前面类似,在此就不赘述。

下面给出基于以上思路写出的完整代码(已 AC):

/*
    MT2194 大斐列 
    通过 python 算出最后数字(即第 5000 项)的长度为 1045
*/
#include<bits/stdc++.h> 
using namespace std;

const int N = 1100;
int numa[N], numb[N], numc[N];

// 计算斐波那契数列
void getFibonacci(int n)
{
    // 赋初值
    memset(numa, 0, sizeof(numa));
    memset(numb, 0, sizeof(numb));
    memset(numc, 0, sizeof(numc));
    numa[0] = numb[0] = 1;
    n -= 2;
    // 递推求解斐波那契数列并统计前缀和 
    while(n--){
        // 将数组中的每个数按位进行加法运算 
        for(int i=0;i<N;i++)
            numc[i] = numa[i] + numb[i];
        // 对存放加法结果的数组执行进位处理
        for(int i=0; i<N; i++){
            numc[i+1] += numc[i] / 10;
            numc[i] %= 10;
        }
        // 将数组进行前向赋值(从而实现递推)
        memcpy(numa, numb, sizeof(numb));
        memcpy(numb, numc, sizeof(numc));
    }
}

// 输出大数加法后的结果 
void printBigData()
{
    // 从最高位向后扫描,直到第 1 个非 0 数字出现 
    int p = N-1;
    while(numc[p] == 0) p--;
    while(p > -1) cout<<numc[p--];
    cout<<"\n";
} 

int main( )
{
    // 获取输入 
    int n;
    cin>>n;
    // 求出斐波那契数列 
    getFibonacci(n);
    // 输出指定项 
    printBigData();
    return 0;
} 


MT2195 升级版斐波那契数列

难度:黄金    时间限制:1秒    占用内存:128M
题目描述

我们都知道斐波那契数列一项是前两项的和,现在我们规定一个升级版斐波那契数列,其一项为前三项的和,要求算其前 n n n 项的和。即,定义: F [ 1 ] = 1 , F [ 2 ] = 1 , F [ 3 ] = 1 F[1] = 1,F[2] = 1,F[3] = 1 F[1]=1F[2]=1F[3]=1,递推关系为: F [ N ] = F [ N − 1 ] + F [ N − 2 ] + F [ N − 3 ] F[N] = F[N-1] + F[N-2] + F[N-3] F[N]=F[N1]+F[N2]+F[N3]

格式

输入格式:一个整数 n n n
输出格式:前 n n n 项的和。

样例 1

输入:4

输出:6

备注

其中: 4 ≤ n ≤ 1000 4\le n \le 1000 4n1000


相关知识点:高精度计算


题解


这道题依然考察了大数加法,和前面一题类似,下面直接给出求解本题的完整代码(已 AC):

/*
    MT2195 升级版斐波那契数列 
    通过 python 算出最后数字(即第 1000 项)的长度为 265,整个数列的数字之和长度为 265
*/
#include<bits/stdc++.h> 
using namespace std;

const int N = 300;
int numa[N], numb[N], numc[N], numd[N], preSum[N];

// 计算斐波那契数列
void getFibonacci(int n)
{
    // 赋初值
    memset(numa, 0, sizeof(numa));
    memset(numb, 0, sizeof(numb));
    memset(numc, 0, sizeof(numc));
    memset(numd, 0, sizeof(numd));
    memset(preSum, 0, sizeof(preSum));
    numa[0] = numb[0] = numc[0] = 1;
    preSum[0]  = 3;
    n -= 3;
    // 递推求解斐波那契数列并统计前缀和 
    while(n--){
        // 将数组中的每个数按位进行加法运算 
        for(int i=0;i<N;i++)
            numd[i] = numa[i] + numb[i] + numc[i];
        // 对存放加法结果的数组执行进位处理
        for(int i=0; i<N; i++){
            numd[i+1] += numd[i] / 10;
            numd[i] %= 10;
        }
        // 将当前项累加至前缀和数组中
        for(int i=0;i<N;i++)
            preSum[i] += numd[i];
        for(int i=0; i<N; i++){
            preSum[i+1] += preSum[i] / 10;
            preSum[i] %= 10;
        }
        // 将数组进行前向赋值
        memcpy(numa, numb, sizeof(numb));
        memcpy(numb, numc, sizeof(numc));
        memcpy(numc, numd, sizeof(numd));
        
    }
}

// 输出大数加法后的结果 
void printBigData()
{
    // 从最高位向后扫描,直到第 1 个非 0 数字出现 
    int p = N-1;
    while(preSum[p] == 0) p--;
    while(p > -1) cout<<preSum[p--];
    cout<<"\n";
} 

int main( )
{
    // 获取输入 
    int n;
    cin>>n;
    // 求出斐波那契数列 
    getFibonacci(n);
    // 输出前缀和 
    printBigData();
    return 0;
} 


MT2196 2的N次幂

难度:黄金    时间限制:1秒    占用内存:128M
题目描述

任意给定一个正整数 N ( N ≤ 100 ) N(N\le100) N(N100) ,计算 2 的 N N N 次方的值。

格式

输入格式:一个正整数 N N N
输出格式:输出 2 N 2^N 2N 的值。

样例 1

输入:5

输出:32


相关知识点:高精度计算


题解


2 n 2^n 2n n n n 取 100 时,是一个长度为 31 的大数,因此也是一道高精度题。与前面不同的是,这道题要求的是乘幂运算。但实际上,数的乘幂运算就等于进行 “幂” 次乘法运算(叠乘),乘数为底数。所以求解该题的关键实际是基于乘法运算的高精度计算问题,关于如何实现大数乘法运算的分析请见博客 【算法与数据结构】——大数运算 。

这里选用的数据结构依然是 int 型数组,其存储规则和大数加法一致(即低位对应较小的索引,高位对应较大的索引)。不过在算法一开始,需要将该数组的最低位置为底数(即 2)。接下来,定义一重循环(循环次数为 n − 1 n-1 n1),每遍都执行以下两步:

  • 将存放大数的数组中的每一位都乘以底数;
  • 遍历整个数组执行进位。

算法结束时,即得到了大数乘幂运算的结果。下面给出基于以上思路得到的完整代码:

/*
    MT2196 2的N次幂  
*/
#include<bits/stdc++.h> 
using namespace std;

// 题目给的数据范围保证了结果不超过 32 位 
const int N = 32;
int num[N];

// 高精度乘幂运算
void getHighPrecision(int base, int power)
{
    // 初始化存放运算结果的数组 
    memset(num, 0, sizeof(num));
    // 给数组赋初值 
    num[0] = base;
    // 执行乘幂运算 
    while(--power){
        // 将数组中的每个数进行乘法运算 
        for(int i=0; i<N; i++)
            num[i] *= base;
        // 对数组执行进位处理
        for(int i=0; i<N; i++){
            num[i+1] += num[i] / 10;
            num[i] %= 10;
        }
    }
}

// 输出高精度运算后的大数
void printBigData()
{
    // 从最高位向后扫描,直到第 1 个非 0 数字出现 
    int p = N-1;
    while(num[p] == 0) p--;
    while(p > -1) cout<<num[p--];
    cout<<"\n";
} 

int main( )
{
    // 获取输入 
    int n;
    cin>>n;
    // 执行乘幂的高精度运算
    getHighPrecision(2, n);
    // 输出 
    printBigData();
    return 0;
} 

END


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

邮件群发的功能优势

动态IP切换登录发送 保证送达率 软件可自动切换不同的动态拨号VPS的IP&#xff0c;登录不同的第三方免费邮件发送方&#xff0c;模拟真实环境&#xff0c;一个IP登录一个小号邮件账号发送&#xff0c;这样可以绕过因为一个IP同时登录同个第三方免费邮箱的不同账户而造成的屏蔽&…

HUAWEI华为笔记本MateBook 16 2021款 锐龙版 R7 集显(CREM-WFD9)原厂Win10系统

华为原装出厂系统自带指纹、显卡、声卡、网卡等所有驱动、出厂主题壁纸LOGO、Office办公软件、华为电脑管家等预装程序 链接&#xff1a;https://pan.baidu.com/s/18XIYnasYFfLxSKS6LfoHvw?pwdly6j 提取码&#xff1a;ly6j

WOFOST模型与PCSE模型应用丨数据准备,模型参数解读与设置,模型运行与结果输出,模型结果解读与决策支持等

目录 专题一 理论基础 专题二 数据准备 专题三 WOFOST模型基础 专题四 PythonCropSimulationEnvironment 专题五 案例拓展 更多应用 WOFOST&#xff08;WorldFoodStudies&#xff09;和PCSE&#xff08;PythonCropSimulationEnvironment&#xff09;是两个用于农业生产模…

安装使用electron

一、安装node和npm 运行cmd查看是否安装及版本号 npm -v node -v 二、安装electron npm直接安装会报错缺少什么文件&#xff0c;使用cnpm进行安装 直接安装cnmp后&#xff0c;再用cnmp命令安装可能会报错Error: Cannot find module ‘node:util’ 原因是npm版本与cnpm版本…

高中学历,月薪3000服务员,用四个月“改命”进国企,变身网络安全工程师

最近几年&#xff0c;不少年轻人都感到非常焦虑&#xff0c;压力大&#xff0c;迷茫。在时代变迁的洪流中&#xff0c;如何获得内心的平静呢&#xff1f; ——成长。 “只有认知突破&#xff0c;才能带来真正的成长。”这是雷军在8月14日年度演讲中提到的&#xff0c;近十年来…

OPENCV实现计算描述子

1、计算描述子 kp,des = sift.computer(img,kp) 2、其作用是进行特征匹配 3、同时计算关键点和描述 3.1、kp,des = sift.detectAnd Computer(img,...)

kali更换gnome并自定义登录界面

文章目录 安装gnome修改登录界面 Gnome是linux下比较好看的一款Linux图形化界面&#xff0c;发现网上的教程很多各式各样&#xff0c;有些还是错误的不能正确更换&#xff0c;或者不能修改登录界面 安装gnome 我们只需要执行sudo apt install gnome命令即可。 这个过程会花费很…

包含文心一言在内的首批国产大模型 全面开放

8月31起&#xff0c;国内 11 家通过《生成式人工智能服务管理暂行办法》备案的 AI 大模型产品将陆续上线&#xff0c;面向全社会开放。北京 5 家大模型产品分别是百度的 “文心一言”、抖音的 “云雀”、百川智能的 “百川大模型”、清华系 AI 公司智谱华章旗下的 “智谱清言”…

为什么过早的优化是万恶之源

为什么过早的优化是万恶之源? 缘起 Donald Knuth&#xff08;高德纳&#xff09; 是一位计算机科学界的著名学者和计算机程序设计的先驱之一。他被誉为 计算机科学的“圣经”《计算机程序设计艺术》的作者 &#xff0c;提出了著名的“大O符号”来描述算法的时间复杂度和空间…

ABB PCD231B通信输入/输出模块

多通道输入和输出&#xff1a; PCD231B 模块通常配备多个输入通道和输出通道&#xff0c;用于连接传感器、执行器和其他设备。 通信接口&#xff1a; 这种模块通常支持各种通信接口&#xff0c;如以太网、串口&#xff08;RS-232、RS-485&#xff09;、Profibus、CAN 等&#…

MIMIC-IV数据提取教程

一、获取MIMIC-IV数据库 MIMIC-IV数据库需要申请权限&#xff0c;具体怎么申请我之前的博客发的有:MIMIC数据库申请流程 以最新的MIMIC-IV 2.2版本为例&#xff0c;首先打开页面拖动到最底端&#xff1a;https://physionet.org/content/mimiciv/2.2/ 直接下载解压下来&#x…

vue3中如何使用el-tooltip中的插槽达到换行效果

el-tooltip的content属性中的内容可以使用插槽来替换 话不多说&#xff0c;直接上代码 <el-tooltip effect"light" placement"top-start"><div slot"content" class"tips"> // 在这里运用插槽<p class"tip-tex…

dayjs格式转换成日期

目录 方法一&#xff1a; ​编辑方法二&#xff1a; 这个项目在筛选订单时间的时候是由前端进行筛选的&#xff0c;用的是adt-design-pro进行二开的&#xff0c;其中在用日期组件的时候遇到了一个问题&#xff0c;组件返回的是&#xff1a; 但是我需要的是年-月-日&#xff…

Fair|Fur —— 介绍

Hair Utils工具架&#xff0c;可快速设置毛发对象&#xff0c;及动画和解算&#xff1b; Guide Process工具架&#xff0c;用于设置毛发样式&#xff0c;可通过绘制皮肤属性来影响引导毛发的位置和方向&#xff1b; 创建毛发Fur&#xff0c;起始于一几何体&#xff0c;然后使用…

开源图形驱动在OpenHarmony上的使用和落地

本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第10期 | 开源图形驱动在OpenHarmony上的使用和落地》 演讲嘉宾 | 黄 然 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 黄然&#xff0c;华为终端BG软件部资深图形技术专家&#xff0c;华为终端游戏标准、工具和分析创…

探索医疗行业的低代码平台:了解适用于医疗领域的最佳选择

数字化的进程已经渗透到各行各业&#xff0c;包括医疗行业&#xff0c;很多医院也开始实现数字化管理&#xff0c;依托低代码平台。 医疗管理涉及从组织员工到管理患者&#xff0c;再到保存医疗机构资源等各个方面。医疗保健管理的范围因机构规模(当地诊所或专科医院)而异。通…

字节跳动推出AI对话工具“豆包”:免费用

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 听说松松客服的小马爆料了一个消息&#xff1a;字节跳动推出了一个新的AI大模型对话工具&#xff0c;叫做“豆包”。竟然一查发现&#xff0c;早在8月18号就已经上线了呢。原来这个“豆包”其实是之…

实训笔记8.31

实训笔记8.31 8.31笔记一、项目开发流程一共分为七个阶段1.1 数据产生阶段1.2 数据采集存储阶段1.3 数据清洗预处理阶段1.4 数据统计分析阶段1.5 数据迁移导出阶段1.6 数据可视化阶段 二、项目数据清洗预处理的实现2.1 清洗预处理规则2.2 代码实现 三、项目的数据统计分析阶段3…

NoSQL基础

零、文章目录 NoSQL基础 1、为什么要用NoSQL &#xff08;1&#xff09;单机单数据库时代 网络不发达的时代&#xff0c;一个系统由一台机器&#xff0c;一个数据库来实现&#xff0c;只要流量上来&#xff0c;首先性能瓶颈就是数据库IO。 &#xff08;2&#xff09;Cache数…

C语言指针进阶(3)

这节我们来总结一下指针和数组面试题。 在这节我们主要用到这样几个知识点&#xff1a; 1.数组名是数组首元素的地址。 但是有两个例外&#xff1a; 2.sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff0c;计算的是整个数组的大小&#xff0c;单位是字节。 3.&…