日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法之大数加减乘除

發布時間:2025/5/22 编程问答 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法之大数加减乘除 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大數加法:

  例題 hdu1002

#include<iostream> #include<cstring> #include<cstdio> using namespace std; #define N (1010)void big_add(char* res,char* sa,char* sb) {//add為進位,k表示res長度。int ia,ib,add,k;ia = strlen(sa)-1; //從長度-1開始計算ib = strlen(sb)-1;k=add = 0;while(ia>=0&&ib>=0){int num = sa[ia] -'0'+ sb[ib] - '0' + add;add = num / 10;num %= 10;res[k++] = num + '0';--ia;--ib;}while(ia>=0){int num = sa[ia] - '0' + add;add = num / 10;num %= 10;res[k++] = num + '0';--ia;}while(ib>=0){int num = sb[ib] - '0' + add;add = num / 10;num %= 10;res[k++] = num + '0';--ib;}if(add != 0)res[k++] = add + '0';res[k] = '\0';//字符串倒轉char temp[k+1];strcpy(temp,res);for(int i=k-1;i>=0;--i)res[k-1-i] = temp[i]; }int main() {int T;scanf("%d",&T);for(int t=1;t<=T;++t){char res[N],sa[N],sb[N];scanf("%s%s",sa,sb);big_add(res,sa,sb);printf("Case %d:\n",t);printf("%s + %s = %s\n",sa,sb,res);if(t!=T)printf("\n");}return 0; } View Code

?

大數減法:

? ? 這幾天比較忙,大數減法到現在開始寫。大數減法大體思路與大數加法類似。主要是確定相減的兩個數的大小,然后總是大的減小的,最后所得結果更加判斷是否減少負號。

#include<iostream> #include<cstdio> #include<cstring> using namespace std; //字符串反轉 void Reverse(char* s) {int k = strlen(s);char temp[k];for(int i=0;i<k;++i)temp[k-i-1] = s[i];temp[k] = '\0';strcpy(s,temp); } // res = s1 - s2; void big_sub(char* res,char* s1,char* s2) {//當s1等于s2的時候,直接返回零if(strcmp(s1,s2)==0){strcpy(res,"0");return;}int l1 = strlen(s1),l2 = strlen(s2);char *str1,*str2,sign = '+';//通過字符串的長度與strcmp比較這個函數,去掉s1與s2是那個大//該方法總是大的減小的,根據判斷,答案是否會加上'-'號。if(l1 > l2 || (l1==l2&&strcmp(s1,s2)>0)){str1 = s1;str2 = s2;}else{str1 = s2;str2 = s1;sign = '-';}int sub=0,k=0;l1 = strlen(str1);l2 = strlen(str2);while(l1&&l2){int ans = str1[--l1] - str2[--l2] - sub;if(ans < 0) ans += 10,sub = 1;else sub = 0;res[k++] = ans + '0';}while(l1){int ans = str1[--l1] - '0' - sub;if(ans < 0) ans += 10,sub = 1;else sub = 0;res[k++] = ans + '0';}//去多余0while(res[k-1]=='0')--k;if(sign == '-')res[k++] = sign;res[k] = '\0';Reverse(res); } int main() {char s1[100],s2[100],res[100];while(~scanf("%s%s",s1,s2)){big_sub(res,s1,s2);printf("%s\n",res);}return 0; } View Code

?

大數乘法:

  方法一:計算a*b的和,只要利用大數加法a相加b次就行了,循環b次的時候可以用大數減法進行--b計算。思路比較簡單,但是效率很低,在這里只是稍微提一下而已。

? ? ?方法二:dp[i+j] += a[i]*b[j] + add;代碼如下:

  

#include<iostream> #include<cstdio> #include<cstring> using namespace std; //字符串反轉 void Reverse(char* s);//該方法有點像dp void big_mul(char* res,char* s1,char* s2) {if(strcmp(s1,"0")==0||strcmp(s2,"0")==0){strcpy(res,"0");return;}int l1 = strlen(s1),l2 = strlen(s2);for(int i=0;i<l1+l2;++i)res[i] = '0';for(int i=l1-1,ki=0;i>=0;--i,++ki){int add = 0,kj=0;for(int j=l2-1;j>=0;--j,++kj){int num = (res[ki+kj]-'0') + (s1[i] - '0') * (s2[j]-'0') + add;add = num / 10;res[ki + kj] = num%10 + '0';}//kj已經加1了int k = ki+kj;while(add){int num = (res[k]-'0') + add;add = num / 10;res[k++] = num%10 + '0';}}int k = l1 + l2;while(res[k-1] == '0')--k;res[k] = '\0';Reverse(res); }int main() {char res[201],s1[100],s2[100];while(~scanf("%s%s",s1,s2)){big_mul(res,s1,s2);printf("%s\n",res);}return 0; }void Reverse(char* s) {int k = strlen(s);char temp[k];for(int i=0;i<k;++i)temp[k-i-1] = s[i];temp[k] = '\0';strcpy(s,temp); } View Code

?

轉載于:https://www.cnblogs.com/jlyg/p/6668347.html

總結

以上是生活随笔為你收集整理的算法之大数加减乘除的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 性生活网址| 一级黄色大片视频 | 伦一理一级一a一片 | 捆绑无遮挡打光屁股调教女仆 | 欧美二区在线观看 | 日爽夜爽| 成人自拍视频网 | 中文字幕婷婷 | 精品久久久久一区二区 | 91性 | 男女日批免费视频 | 久久久精品免费看 | av高清免费 | 91 免费看片 | 成人性生交大免费看 | 国产精品不卡在线观看 | 免费一级特黄3大片视频 | 天天干干| 黄色大网站| 国产正在播放 | 加勒比波多野结衣 | 一对一色视频聊天a | 国产精品视频免费 | 亚洲成人一二三区 | 一级色网站 | 久久精品国产网红主播 | 四虎影视精品 | 极品新婚夜少妇真紧 | av免费网站 | 日韩一区在线看 | www.亚洲高清 | 琪琪久久 | 涩视频在线观看 | 一级片免费网址 | 欧美在线一级片 | 女性裸体不遮胸图片 | 欧美日韩国产电影 | 一区二区播放 | 免费亚洲婷婷 | 中文字幕国产一区 | 国产啊v在线观看 | 少妇一级淫免费播放 | 澳门黄色网 | 韩国一区二区在线观看 | www国产com| 正在播放超嫩在线播放 | 色狠狠综合 | 欧美日韩一区二区区别是什么 | 免费成人精品 | 欧洲美女与动交ccoo | 成人精品一区二区 | 欧美在线视频免费 | 绯色av一区二区 | 一级女性全黄久久生活片免费 | 麻豆视频一区二区 | 精品无码三级在线观看视频 | 日剧大尺度床戏做爰 | 日韩欧美毛片 | 中文字幕在线日本 | 日韩欧美福利 | 在线观看污污视频 | 人人妻人人爽一区二区三区 | 国产福利一区二区三区在线观看 | 久久九九视频 | 成人在线播放网站 | 美女脱得一干二净 | 免费在线色视频 | 男人撒尿视频xvideos | www性| 乳揉みま痴汉4在线播放 | 五月天六月婷婷 | 午夜精品久久久久久久99热浪潮 | 樱花电影最新免费观看国语版 | 国产性猛交╳xxx乱大交一区 | 伊人久久色 | 大尺码肥胖女系列av | 国产伦精品一区二区三区视频痴汉 | 色丁香六月 | 国产色无码精品视频国产 | 欧美黄色一级视频 | 丁香啪啪综合成人亚洲 | 国产美女特级嫩嫩嫩bbb | 涩涩屋视频在线观看 | 操比网站 | 人人妻人人玩人人澡人人爽 | 国产又黄又骚 | 久久11| 欧美激情校园春色 | 四虎在线免费观看视频 | 日韩久久成人 | 久久精品在线 | www.xxxx欧美| 天堂精品在线 | 亚洲精品69 | 日本在线小视频 | 少妇视频一区 | 人人爱人人 | 五月情婷婷 | 国模av|