- UID
- 739901
- 在线时间
- 3 小时
- 最后登录
- 1970-1-1
- 注册时间
- 2014-4-1
- 宅魂
- 609 点
- 贡献
- 68 点
- 宅币
- 4794 枚
- 灵石
- 50 块
- 元气(技能点)
- 2 点
- 活跃
- 95 ℃
- 听众
- 10
- 收听
- 0
签到天数: 8 天 连续签到: 1 天 [LV.3]偶尔看看II
序章
- 积分
- 6977
|

楼主 |
发表于 2019-11-9 17:56:01
|
显示全部楼层
本帖最后由 1234567章鱼君 于 2019-11-9 17:59 编辑
大数相乘
- #include<bits/stdc++.h>
- using namespace std;
- const int MAX=2e4;
- char A[MAX+5],B[MAX+5];
- int ans[MAX+5]={0};
- void Swap(char *A,int n)
- {
- for(int i=0,j=n-1;i<j;i++,j--)
- swap(A[i],A[j]);
- }
- int main()
- {
- scanf("%s%s",A,B);
- int m=strlen(A);
- Swap(A,m);
- int n=strlen(B);
- Swap(B,n);
- for(int i=0;i<m;i++) //A中的每一位数与B的每一位数相乘
- for(int j=0;j<n;j++) //并存放在A与B位数之和的ans的位置上
- ans[i+j]=ans[i+j]+(A[i]-'0')*(B[j]-'0');
- int i;
- for(i=0;i<MAX;i++)
- {
- ans[i+1]=ans[i+1]+ans[i]/10;
- ans[i]=ans[i]%10;
- }
- for(i=MAX-1;i>=0;i--) //判断ans长度
- if(ans[i])
- break;
- for(;i>=0;i--)
- cout<<ans[i];
- cout<<endl;
- return 0;
- }
复制代码 |
|