六六大顺--高精度+数学
1.高精度乘法+加法--30%
2.找到66*66,666*666的规律,不用乘法了,40%;
3.正解直接没有高精度数组模拟
https://www.luogu.com.cn/problem/P8811
30%版本
#include<bits/stdc++.h>
using namespace std;
#define N 100011
typedef long long ll;
typedef pair<int,int> pii;
int n,k;
string ff(int n)
{int a[N+1000],b[N+1000],c[N+1000];int an[N+1000];memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(an,0,sizeof(an));for(int i=0;i<n;i++) a[i]=b[i]=6;for(int i=0;i<n;i++){for(int j=0;j<n;j++){c[i+j]+=a[i]*b[j];}}int co=0;for(int i=0;i<=2*n+2;i++){int s=(co+c[i])%10;co=(co+c[i])/10;an[i]=s;}int i;string aa;for(i=2*n+2;i>=0;i--)if(an[i]) break;for(i;i>=0;i--) aa.insert(aa.end(),(char)(an[i]+'0'));return aa;}
string jf(string aa,string bb)
{int a[N],b[N],c[N];int an[N];memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));memset(an,0,sizeof(an));int pa,pb;pa=0;pb=0;for(int i=aa.size()-1;i>=0;i--) a[pa++]=aa[i]-'0';for(int i=bb.size()-1;i>=0;i--) b[pb++]=bb[i]-'0';for(int i=0;i<max(pa,pb);i++){c[i]+=b[i]+a[i];}int co=0;for(int i=0;i<=max(pa,pb)+2;i++){int s=(c[i]+co)%10;co=(c[i]+co)/10;an[i]=s;}int i=max(pa,pb)+2;for(i;i>=0;i--) if(an[i]) break;string w;for(i;i>=0;i--) w.insert(w.end(),(char)(an[i]+'0'));return w;
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n;string s="0";for(int i=1;i<=n;i++){s=jf(s,ff(i));}cout<<s;return 0;
}