社区讨论
求大佬帮助,结果一直是一位数,感觉思路没问题,新手
P1303A*B Problem参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m2xj4oc2
- 此快照首次捕获于
- 2024/11/01 00:38 去年
- 此快照最后确认于
- 2025/11/04 15:37 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
string aa(string a, string b) {
if (a == "0" || b == "0") return "0"; // 特殊情况
string c;
int A = a.size()-1;
int B = b.size()-1;
int flag=0;//进位符号
for(int i=min(A,B);i>=0;--i)//思路是用位数少的乘以位数多的,位数少的从最低位开始遍历乘以位数大的那个数
{
for(int j=max(A,B);j>=0;--j)
{
int sum=flag;
if(a.size()<b.size())//如果字符串a的大小小于b的,把i给a
{
int cheng=(a[i]-'0')*(b[j]-'0');
sum+=cheng;
c.push_back(sum%10+'0');
flag=sum/10;
}
else
{
int cheng=(b[i]-'0')*(a[j]-'0');//把i给b
sum+=cheng;
c.push_back(sum%10+'0');
flag=sum/10;
}
}
}
reverse(c.begin(),c.end());
return c;
}
signed main() {
string a, b;
cin >> a >> b;
cout << aa(a,b);
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...