tle求助
查看原帖
tle求助
373422
xuxinyi楼主2023/8/1 20:43
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+7;
int n;
int a[N],b[N],c2[N];
string s;
string s1="1";
string s2;
string ans="0";
void change(string s,int a[])
{
	int temp1=0;
	for(int i=s.length()-1;i>=0;i--)
	{
		a[++temp1]=int(s[i]-'0');
	}
}
string cf(string s1,string s2)
{
	int len1=s1.length(),len2=s2.length();
	change(s1,a);change(s2,b);
	s="";
	for(int i=1;i<=len1;i++)
	{
		for(int j=1;j<=len2;j++)
		{
			c2[i+j-1]+=a[i]*b[j];
			c2[i+j]+=c2[i+j-1]/10;
			c2[i+j-1]%=10;
		}
	}
	int tp=0;
	if(c2[len1+len2]!=0) 
	{
		s+=char(c2[len1+len2]+'0');
	}
	for(int i=len1+len2-1;i>=1;i--)
	{
		s+=char(c2[i]+'0');	
	}
	return s;
}
string pluss(string s1,string s2)
{
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c2,0,sizeof(c2));
	string s;
	int len1=s1.length(),len2=s2.length();
	change(s1,a);change(s2,b);
	int len3=max(len1,len2);
	for(int i=1;i<=len3;i++)
	{
		c2[i]+=a[i]+b[i];
		c2[i+1]+=c2[i]/10;
		c2[i]%=10;
	}
	if(c2[len3]!=0) s+=char(c2[len3]+'0');
	for(int i=len3-1;i>=1;i--)
	{
		s+=char(c2[i]+'0');	
	}
	return s;
}
int main()
{
	ios::sync_with_stdio(false);
	cin>>n;
	int len=1;
	for(int i=1;i<=n;i++)
	{
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(c2,0,sizeof(c2));
		if(i<10) s2=char(i+'0');
		else 
		{
			s2="";
			s2+=char(i/10+'0');
			s2+=char(i%10+'0');
		}
		s1=cf(s1,s2);
		ans=pluss(ans,s1);
	}
	cout<<ans<<endl;
	return 0;
}

这个代码能怎么优化进1s吗

2023/8/1 20:43
加载中...