只有20分,麻烦大佬详细讲一下思路
  • 板块P1303 A*B Problem
  • 楼主S1746
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/11/18 20:27
  • 上次更新2023/10/27 02:29:38
查看原帖
只有20分,麻烦大佬详细讲一下思路
601009
S1746楼主2022/11/18 20:27
#include<iostream>
using namespace std;
void print(int *k,int len)
{
  for(int i=len; i>=0; i--)
  {
    cout<<*(k+i);
  }
  //cout<<endl;
}//输出以len~0顺序
int main()
{
  string a,b;
  int c[4050];
  cin>>a>>b;
  if(a[0]=='0'||b[0]=='0')
  {
    cout<<0;
    return 0;
  }
  int len=a.length()+b.length();
  for(int i=0; i<int(a.length()); i++)
  {
    a[i]-='0';
  }
  for(int i=0; i<int(b.length()); i++)
  {
    b[i]-='0';
  }
  for(int i=0; i<a.length(); i++)
  {
    for(int ii=0; ii<b.length(); ii++)
    {
      int k=a.length()-i-1+b.length()-ii-1;
      c[k]+=a[a.length()-i-1]*b[b.length()-ii-1];//c[0]为末尾
    }
  }
  //int mm=0;
  len--;
  //print(c,len);
  while(c[len]==0)
  {
    len--;
  }
  for(int i=0; i<=len; i++)//VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
  {
    c[i+1]+=c[i]/10;
    c[i]=c[i]%10;
  }
  if(c[len+1])
  {
    len++;
  }
  print(c,len);
  return 0;
}
/*375
   *34
   ___
  1500
 1125
 _____
 12750
 从0~len进位*/
2022/11/18 20:27
加载中...