最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

高精度乘法(詳細(xì)解答)

2022-05-03 11:26 作者:游俠翻滾  | 我要投稿

/*

目前信息技術(shù)鄰域啊高進(jìn)度運(yùn)算越來(lái)越普遍,但是又非常難啊。

現(xiàn)在up來(lái)溫習(xí)一下高進(jìn)度運(yùn)算,試一試蛤,順便來(lái)幫助大家理解一下

up打字辛苦給給一個(gè)免費(fèi)的贊吧,求你們了,謝謝!

話(huà)不多說(shuō),直接開(kāi)始?

*/?


//注意,高精度乘法無(wú)法適用于負(fù)數(shù)相乘?

#include <cstdio>

#include <cstring>

#include <iostream>

#include <algorithm>

using namespace std;

const int maxn=209;

char x[maxn],y[maxn];

int a[maxn],b[maxn],c[2*maxn];

int main()

{

cin>>x>>y;//輸入想要運(yùn)算的兩個(gè)數(shù)?

int len1=strlen(x),len2=strlen(y);//分別記錄x,y的長(zhǎng)度到len1與len2?

//初始化a,b,c的值?

memset(a,0,sizeof a);?

memset(b,0,sizeof b);

memset(c,0,sizeof c);

? ? //把x,y數(shù)組中的每一位的數(shù)字在0~9之間的序號(hào)記錄到 a,b數(shù)組(即把每一個(gè)數(shù)字記錄到a,b數(shù)字里)?

//比如:7在ASCII碼中是55,0在ASCII碼中是48,所以7的序號(hào)應(yīng)該是55-48=7,再把7記錄到a,b數(shù)組。?

? ? for(int i=len1-1,j=0; i>=0; i--,j++) a[j]=x[i]-'0';

? ? for(int i=len2-1,j=0; i>=0; i--,j++) b[j]=y[i]-'0';

? ? //各個(gè)位于各個(gè)位相乘(核心)?

? ? //注意!這里的每一個(gè)位數(shù)可能大于10,所以我們還有下面的程序管理進(jìn)位?

? ? for(int i=0; i<len1; i++)? ? ? ? ? ? ? //a數(shù)組的每一個(gè)數(shù)字循環(huán)一遍?

? ? for(int j=0; j<len2; j++)? ? ? ? ? ??? //b數(shù)組的每一個(gè)數(shù)字循環(huán)一遍?

? ? ? ? ? ? c[i+j]+=a[i]*b[j];? ? ? ? ? ? ??? ?//相乘結(jié)果記錄到c數(shù)組里?

? ? int i;

? ? for(i=0; i<2*maxn; i++)? ? ? ? ? ? ? ? //循環(huán)2*maxn遍,把每一個(gè)位數(shù)都循環(huán)一遍?

? ? {

? ? ? ? c[i+1]+=c[i]/10;//前面那個(gè)位需要加后面那一位的進(jìn)位數(shù),如:3(23)轉(zhuǎn)化成(3+1)(23%10)=42?

? ? ? ? c[i]%=10;//后面那個(gè)數(shù)是原先的取余10,同上面的例子?

? ? }

? ? //輸出答案?

? ? int k=2*maxn;//一共的位數(shù)?

? ? while(c[k]==0) k--;//把每一個(gè)位數(shù)都循環(huán)一遍,保證沒(méi)有遺漏?

? ? if(k<0) cout<<"0";//如果運(yùn)算2個(gè)數(shù)是0*0,那么k會(huì)直接變成負(fù)數(shù),導(dǎo)致無(wú)法輸出,有了這個(gè)就會(huì)讓程序輸出0了。?

? ? else? ??

? ? for(i=k;i>=0; i--)//輸出每一位的位數(shù)?

? ? ? ? cout<<c[i];

? ? return 0;

}

/*

總結(jié):

輸入字符通過(guò)-'0'將其轉(zhuǎn)化成數(shù)字并存儲(chǔ)到其他的數(shù)組里再用循環(huán)把他們挨個(gè)相乘

注意:這里的乘是乘數(shù)的各個(gè)位乘乘數(shù)的各個(gè)位

如果有進(jìn)位的話(huà),那么把進(jìn)位的數(shù)存儲(chǔ)給前面的結(jié)果,這里就是c[i+1]+=c[i]/10,存完以后當(dāng)前位數(shù)就變成了c[i]%=10;

保存完以后就循環(huán)輸出答案就好了?

*/?

高精度乘法(詳細(xì)解答)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
巫山县| 青州市| 伊金霍洛旗| 泸溪县| 柘荣县| 黑水县| 阿坝县| 祥云县| 霞浦县| 临沂市| 宜州市| 宁国市| 肃南| 治县。| 焉耆| 原阳县| 石泉县| 乐陵市| 耒阳市| 苏尼特左旗| 晋州市| 招远市| 资源县| 准格尔旗| 璧山县| 朝阳区| 福建省| 石棉县| 讷河市| 昌宁县| 江油市| 鲁山县| 班玛县| 汝阳县| 红原县| 凌云县| 中山市| 锡林浩特市| 昌邑市| 宣城市| 襄樊市|