高精度,求条
查看原帖
高精度,求条
1421656
little_q_exist楼主2024/10/23 20:33

样例都妹过(泪

#include<iostream>
#include<cstring>
using namespace std;
int a[52],b[52],c[102],d[52],f[102];
int len_a = 0,len_b = 1,len_c = 1,len_d = 1;
int main(){
	int n;
	b[0] = 1;
	cin>>n;
	for (int i = 1;i<=n;i++)
	{
		int p = i;
		while (p>0) //采用在i-1的结果上累乘i 
		{
			a[len_a] = p%10;//把i输入a数组 
			p /= 10;
			len_a ++;
		}
		for (int i = 0;i<len_a;i++)
		{
			for (int j = 0;j<len_b;j++)
			{
				c[i+j] += a[i]*b[j];//高精乘 
			}
		}
		while (c[len_c]) len_c ++;
		for (int i = 0;i<len_c;i++)
		{
			if (c[i] > 9)//c数组中存结果 
			{
				c[i+1] += c[i]/10;
				c[i] %= 10;
			}
		}
		while (c[len_c]) len_c ++;
		len_b = len_c;//结果丢到b数组 
		for (int i = 0;i<len_b;i++)
		{
			b[i] = c[i];
		}
		//同时进行高精加法
		for (int i = 0;i<len_c;i++)
		{
			d[i] += c[i];
		}
		while (d[len_d]) len_d ++;
		for (int i = 0;i<len_d;i++)
		{
			if (d[i] > 9)
			{
				d[i+1] += d[i]/10;
				d[i] %= 10;
			}
		}
		while (d[len_d]) len_d ++;
	}
	for (int i = len_d - 1;i>=0;i--)
	{
		cout<<d[i];
	}
	cout<<endl;
	return 0;
}
2024/10/23 20:33
加载中...