藍橋杯訓練----高精度減法,高精度乘法,計算超階乘

也許,年少時不能遇見太過驚豔的人,就像你不能做我的詩,而我無法成爲你的夢!

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
string a,b;
int c[510],ct,s;
int main()
{
    cin>>a>>b;
    int la=a.size()-1;
    int lb=b.size()-1;
    while(la>=0||lb>=0)
    {
        if(la>=0&&lb>=0)
            s=s+(a[la]-'0')-(b[lb]-'0');
        if(la>=0&&lb<0)
            s=s+(a[la]-'0');
        if(s<0)
        {
            c[ct++]=s+10;
            s=-1;
        }
        else
        {
            c[ct++]=s;
            s=0;
        }
        la--;
        lb--;
    }
    for(int i=ct-1;i>=0;i--)
    {
        if(i==ct-1&&c[i]==0)
            continue;
        else
            cout<<c[i];
    }
    return 0;
}

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
char s1[210],s2[210];
int t,temp,len,tt,sum,jw;
int a[210],b[210],jg[210][500],jgc[500];
int main()
{
	cin>>s1>>s2;
	int la=0,lb=0;
	for(int i=strlen(s1)-1;i>=0;i--)
		a[la++]=s1[i]-'0';
	for(int i=strlen(s2)-1;i>=0;i--)
		b[lb++]=s2[i]-'0';
	for(int i=0;i<lb;i++)
	{
		t=0;
		len=i;
		for(int j=0;j<la;j++)
		{
			temp=a[j]*b[i]+t;
			jg[i][len++]=temp%10;
			t=temp/10;
		}
		if(t)
		jg[i][len++]=t;
	}
	for(int i=0;i<len;i++) 
	{
		sum=0;
		tt=0;
		for(int j=0;j<lb;j++)
			sum+=jg[j][i];
		tt=sum+jw;
		jgc[i]=tt%10;
		jw=tt/10;
	}
	if(jw)
		jgc[len++]=jw;
	for(int i=len-1;i>=0;i--)
		cout<<jgc[i];
	cout<<endl;
	return 0;
}

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
ll n,sum=1;
int k,ct;
int main()
{
     
    cin>>n>>k;
    for(int i=1;i<n;i++){
        sum*=(1+i*k);
        while(sum%10==0&&sum>9){
            sum=sum/10;
            ct++;
        }
        sum=sum%100000;    
    }
    cout<<ct<<endl<<sum%10<<endl;
    return 0;
     
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章