社区讨论

求大佬帮助,结果一直是一位数,感觉思路没问题,新手

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 条回复,欢迎继续交流。

正在加载回复...