看我看我,我宣布个事
  • 板块P1303 A*B Problem
  • 楼主sodiums
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/4/16 15:36
  • 上次更新2023/11/5 00:29:38
查看原帖
看我看我,我宣布个事
500888
sodiums楼主2021/4/16 15:36

经典全红 测出来好像是这么个意思 麻了个巴子的,这次问题又出在哪里呢

#include <bits/stdc++.h>
using namespace std;
#define u unsigned long long
#define max 800000
int main ()
{
    string a,b;
    cin>>a>>b;
    int aa[max],bb[max];
    if (a=="0"&&b=="0"){cout <<0;return 0;}
    for (int i=0;i<a.size();i++) aa[i]=a[a.size()-i-1]-48;
    for (int i=0;i<b.size();i++) bb[i]=b[b.size()-i-1]-48;
    int cc[max],jw[max];
    for (int i=0;i<max;i++) {cc[i]=0;jw[i]=0;}
    ///////初始化
    if (1)
      {
      for (int i=0;i<b.size()+10;i++)
      	{
        for (int j=0;j<a.size()+10;j++)
          {//bb[i]*aa[j]  jw:
          if (bb[i]*aa[j]+jw[i+j]>=10)
            {
            cc[i+j]+=(bb[i]*aa[j]+jw[i+j])%10;
            jw[i+j+1]=(bb[i]*aa[j]+jw[i+j])/10%10;
            jw[i+j]=0;
            //cout << "NOWi+j:"<<i+j<<endl<<"NOWcc:"<<cc[i+j]<<endl<<"NEXTjw:"<<jw[i+j+1]<<endl;
            }
          else
            {
            //cout << "NOWi+j:"<<i+j<<endl<<"NOWcc:"<<cc[i+j]<<endl;
            
            cc[i+j]+=(bb[i]*aa[j]+jw[i+j])%10;
            jw[i+j]=0;
            }
          }
       	}
      
      
      //数据存储完毕,但未处理进w
      int fjw=0;
      for (int i=0;i<a.size()*b.size()+2;i++)
        {
        if (fjw+cc[i]>=10)
          {
          int tmp=cc[i];
          cc[i]=(tmp+fjw)%10;
          fjw=((tmp+fjw)/10)%10;
          }
        else
          {
          cc[i]=cc[i]+fjw;
          fjw=0;
          }
        }

    }
  bool fg=0;
  for (int i=max;i>=0;i--) 
    {
    if (fg==0&&cc[i]!=0)
      {
      fg=1;
      cout <<cc[i];
      }
    else if (fg==1)
      {
      cout <<cc[i];
      }
    }
    return 0;
}

2021/4/16 15:36
加载中...