程序到6的时候是873,之后也都是873,不知道哪里出错了,求大佬帮忙!
查看原帖
程序到6的时候是873,之后也都是873,不知道哪里出错了,求大佬帮忙!
395887
jinhai楼主2020/10/11 18:00
#include<bits/stdc++.h>
using namespace std;
int m[1000][1000];
int num[1000];
void mul(int a,int b,int c)                              
{
	for(int j=1;j<=num[a];j++)
	{
		for(int t=1;t<=num[b];t++)
		{
		 	m[c][j+t-1]=m[a][j]*m[b][t];
	 	}
	}
	int len=1;
	while(m[c][len])                                      
	{ 
		m[c][len+1]+=m[c][len]/10;
		m[c][len]%=10;
		len++;
	}
	len--;
	num[c]=len;                                           
}

void plu(int a,int b,int c)                                
{
	int t;
	t=max(num[b],num[a]);
	for(int i=1;i<=t;i++)
	{
		m[c][i]=m[a][i]+m[b][i];
	}
	int len=1;
	while(m[c][len])                                      
	{
		m[c][len+1]+=m[c][len]/10;
		m[c][len]%=10;
		len++;
	}
	len--;
	num[c]=len;                                              
}
int main()
{
	int s;
	cin>>s;
	for(int i=1;i<=s;i++)
	{
		int x=1,d=i;
		while(d)
		{
			m[i][x]=d%10;
			d/=10;
			x++;
		}
		x--;
		num[i]=x;
	}
	mul(1,2,51);                                             
	for(int i=3;i<=s;i++)
		mul(i,48+i,49+i);
	plu(1,51,100);                                          
	int i;
	for(i=3;i<=s;i++)                              
		plu(49+i,97+i,98+i);
	i--;
	int d=98+i;
	for(int i=num[d];i>=1;i--)    cout<<m[d][i];                  
	return 0;
}


2020/10/11 18:00
加载中...