重刷蓝桥杯基础题(六)

一天两题,佛系养生/doge

阶乘计算

#include<bits/stdc++.h>
using namespace std;

const int N=3000;
int f[N],n;

int main()
{
	cin>>n;
	f[1]=1;
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<3000;j++)
			f[j]*=i;
		for(int k=1;k<3000;k++)
		{
			f[k+1]+=f[k]/10;
			f[k]%=10;
		}
	}
	int m=2999;
	while(!f[m]) m--;
	while(m)
	{
		cout<<f[m];
		m--;
	}
	cout<<endl;
	return 0;
}

高精度加法

#include<bits/stdc++.h>
using namespace std;

const int N=110;
int f[N],x[N],y[N];

int main()
{
	string a,b;
	cin>>a>>b;
	for(int i=0,l=a.size()-1;i<a.size();i++,l--)
		x[i]=a[l]-'0';
	for(int i=0,l=b.size()-1;i<b.size();i++,l--)
		y[i]=b[l]-'0';
	for(int i=0;i<105;i++)
		f[i]=x[i]+y[i];
	for(int i=0;i<105;i++)
	{
		f[i+1]+=f[i]/10;
		f[i]%=10;
	}
	int m=105;
	while(!f[m]) m--;
	while(m>=0)
	{
		cout<<f[m];
		m--;
	}
	cout<<endl;
	return 0;
}
原文地址:https://www.cnblogs.com/longwind7/p/15764923.html