社区讨论

这根本挑不出错误,为什么是50分(TLE)

P1045[NOIP 2003 普及组] 麦森数参与者 5已保存回复 17

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
17 条
当前快照
1 份
快照标识符
@lo1q2jsn
此快照首次捕获于
2023/10/23 01:07
2 年前
此快照最后确认于
2023/11/03 01:47
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n;
string ans="1";
int s[510]={};
string mul(string a)
{
	string res="";
	memset(s,0,sizeof(s));
	int k=a.size();
	int m=k;
	for(int i=1;i<=k;i++)
	{
		s[i]=a[m-1]-'0';
		m--;
	}
	for(int i=1;i<=k;i++)
	{
		s[i]*=2;
	}
	for(int i=1;i<=k+1;i++)
	{
		if(s[i]>=10)
		{
			s[i]-=10;
			s[i+1]++;
		}
	}
	for(int i=500;i>=1;i--)
	{
		char p=s[i]+'0';
		res=res+p;
	}
	return res;
}
int main()
{
    cin>>n;
    cout<<(int)(log10(2)*n+1)<<"\n";
    for(int i=1;i<=n;i++)
    {
    	ans=mul(ans);
	}
	int t=ans[499]-'0'-1;
	ans[499]=(char)(t+'0');
	for(int i=0;i<10;i++)
	{
		for(int j=0;j<50;j++)
		{
			cout<<ans[i*50+j];
		}
		cout<<"\n";
	}
    return 0;
}
我这复杂度应该是O(500n),吸氧应该能卡过

回复

17 条回复,欢迎继续交流。

正在加载回复...