高精度乘法
📋 个人简介
🎉大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
💬支持我:点赞👍+收藏⭐️+留言📝
🌺格言:༺永做优质༒programmer༻
📣题目
【输入数据】
有两行,每行是一个不超过100位的非负整数,没有多余的前导0。
【输出要求】
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
1234567890098765432100
【输出样例】
1219326311126352690000
数据规模与约定
不超过100位的非负整数
💯CODE
#include using namespace std;int a[205],b[205],c[410];char s[205];int main(){int na,nb,nc;cin>>s;na=strlen(s);for(int i=0;i<na;++i) {a[na-i-1]=s[i]-'0';} cin>>s;nb=strlen(s);for(int i=0;i<nb;++i) {b[nb-i-1]=s[i]-'0';}/* 乘法运算 */for(int i=0;i<na;++i) for(int j=0;j<nb;++j){c[i+j]+=a[i]*b[j];}nc=na+nb;//统一处理进位 for(int i=0;i<410;++i) {c[i+1]+=c[i]/10;c[i]=c[i]%10;} //前导零int flag=0;//0 前导零 当有一个非零数字,flag=1 全部输出 for(int i=409;i>=0;--i){if(c[i]==0 && flag==0) continue;cout<<c[i];flag=1; }if(flag==0) cout<<0; return 0;}
🌺朋友们,点赞是我更新的动力,明天再见,拜拜!!!
与50位技术专家面对面 20年技术见证,附赠技术全景图