高精速撸project A*B

啊这个乘法我真的想不起来了

所以我跑去看了之前交的代码

那个时候的我真纯真啊,用cin cout都不关同步的

哪像现在,随手先写个inline void in(),能getchar()就不scanf,能putchar()就不printf

用时20:58.5真是无敌丢人了

我一直在用

3939*831

debug,调了半天没找出问题。

无奈忍痛(guide的调试真的很卡)看变量,才发现累乘的+=我写成=了

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define al a[0]
#define bl b[0]
#define cl c[0]
using namespace std;

string s1,s2;
int a[2005],b[2005],c[2005<<3];//a*b=c

int main()
{
	ios::sync_with_stdio(false);
	cin>>s1>>s2;
	al=s1.length();
	bl=s2.length();
	for(int i=1;i<=al;i++)
		a[i]=s1[al-i]-'0';
	for(int i=1;i<=bl;i++)
		b[i]=s2[bl-i]-'0';
	
	if((al==1 and a[1]==0) or (bl==1 and b[1]==0))//特判0
	{
		putchar('0');
		return 0;
	}
	
	cl=(al+bl)<<1;
	for(int i=1;i<=al;i++)
		for(int j=1;j<=bl;j++)
			c[i+j-1]+=a[i]*b[j];
	for(int i=1;i<=cl;i++)
		c[i+1]+=c[i]/10,c[i]%=10;
	while(!c[cl])
		cl--;
	
	for(int i=cl;i;i--)
		putchar(c[i]+'0');
	return 0;
}
posted @ 2017-11-04 21:58  syhien  阅读(1174)  评论(0编辑  收藏  举报