提交结果极其离谱,本地可过

P1591 阶乘数码

123456zzr @ 2023-05-06 21:13:06


using namespace std;
struct likP{
    int ansl,a,n,ip;
}ans[11];
int a[10000001]={1,1},t;
int cmp(likP a,likP b)
{
    return a.n<b.n;
}
void gjj(int n)
{
    int x=0;
    for(int i=1;i<=a[0];i++)
    {
        a[i]*=n;
        a[i]+=x;
        x=a[i]/10;
        a[i]%=10;
    }
    while(x)
    {
        a[0]++;
        a[a[0]]+=x;
        x=a[a[0]]/10;
        a[a[0]]%=10;
    }
}
int ssz(int as)
{
    int sum=0;
    for(int i=1;i<=a[0];i++)
    {
        if(a[i]==as)
        {
            sum++;
        }
    }return sum;
}
int cmpl(likP a,likP b)
{
    return a.ip<b.ip;
}
int main()
{
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        cin>>ans[i].n>>ans[i].a;
        ans[i].ip=i;
    }
    sort(ans+1,ans+t+1,cmp);
    int j=2;
    for(int i=1;i<=t;i++)
    {
        while(j<=ans[i].n )
        {
            gjj(j);
            j++;
        }
        ans[i].ansl=ssz(ans[i].a);
    }sort(ans+1,ans+t+1,cmpl);
    for(int i=1;i<=t;i++)
    {
        cout<<ans[i].ansl<<endl;
    }return 0;
}```
[结果](https://www.luogu.com.cn/record/109715816)

by 123456zzr @ 2023-05-06 21:16:31

极其离谱的提交结果 (某谷甚至不愿意告诉我为什么编译不过去)


by _buzhidao_ @ 2023-05-06 21:21:37

#include<bits/stdc++.h>
using namespace std;
const int _long=10030;//10^_long
void input(int x[]){
    string s;cin>>s;
    memset(x,0,sizeof(x));
    x[0]=s.size();//数组格式:长度+内容 
    for(int i=0;i<x[0];i++){
        x[x[0]-i]=s[i]-48;//惨痛的教训 
    }
} 
void print(int x[]){
    for(int i=x[0];i>0;i--) cout<<x[i];
    cout<<endl;
}
void mem_set(int x[]){
    for(int i=0;i<=_long;i++) x[i]=0;//不严谨 
}

void cheng(int x[],int y[],int z[]){
    mem_set(z);
    z[0]=x[0]+y[0];int k;
    for(int i=1;i<=x[0];i++){
        k=0;
        for(int j=1;j<=y[0];j++){
            z[i+j-1]+=x[i]*y[j]+k;
            k=z[i+j-1]/10;
            z[i+j-1]%=10;
        }
        z[i+y[0]]+=k;
    }
    while(z[z[0]]==0&&z[0]>1) z[0]--;
}
void str_int(int x,int y[]){
    int z=x,cnt=0;
    y[0]=cnt;
    while(z!=0){
        y[cnt+1]=z%10;
        z/=10;cnt++;
    }
    y[0]=cnt;
    //print(y); 
}
int main(){
    int a[_long+1],b[_long+1],c[2*_long+1];
    int n,s,l,cnt;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s>>l;
        mem_set(a);
        a[0]=1;a[1]=1;
        cnt=0;
        for(int j=1;j<=s;j++){
            str_int(j,b);
            cheng(a,b,c);
            for(int k=0;k<=c[0];k++){
                a[k]=c[k];
            }
        }
        for(int i=1;i<=c[0];i++){
            if(c[i]==l) cnt++;
        }
        cout<<cnt<<endl;
    }
    return 0;
}
~~跑的有些慢~~

by _buzhidao_ @ 2023-05-06 21:22:30

好像在代码后面加格式会有问题啊


by GSE_ @ 2023-05-06 21:23:43

刚看了一下你代码 在洛谷在线ide上跑不起来 将第四行a数组开小 可以过编译且答案正确


by GSE_ @ 2023-05-06 21:25:52

数组开到10^5就能过

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

struct likP
{
    int ansl,a,n,ip;
}ans[11];

int a[100001]={1,1},t;
int cmp(likP a,likP b)
{
    return a.n<b.n;
}

void gjj(int n)
{
    int x=0;
    for(int i=1;i<=a[0];i++)
    {
        a[i]*=n;
        a[i]+=x;
        x=a[i]/10;
        a[i]%=10;
    }
    while(x)
    {
        a[0]++;
        a[a[0]]+=x;
        x=a[a[0]]/10;
        a[a[0]]%=10;
    }
}

int ssz(int as)
{
    int sum=0;
    for(int i=1;i<=a[0];i++)
    {
        if(a[i]==as)
        {
            sum++;
        }
    }
    return sum;
}

int cmpl(likP a,likP b)
{
    return a.ip<b.ip;
}

signed main()
{
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        cin>>ans[i].n>>ans[i].a;
        ans[i].ip=i;
    }
    sort(ans+1,ans+t+1,cmp);
    int j=2;
    for(int i=1;i<=t;i++)
    {
        while(j<=ans[i].n )
        {
            gjj(j);
            j++;
        }
        ans[i].ansl=ssz(ans[i].a);
    }
    sort(ans+1,ans+t+1,cmpl);
    for(int i=1;i<=t;i++)
    {
        cout<<ans[i].ansl<<endl;
    }
    return 0;
}

似乎好像可能可以ac↑


by 123456zzr @ 2023-05-06 21:32:52

@GSE_ 谢谢大佬真的是数组开大了,血的教训++,已ac


by 123456zzr @ 2023-05-06 21:33:15

@buzhidao 也感谢这位大佬的指点


by __er @ 2023-05-06 21:35:08

@123456zzr 极大数组使用大括号初始化是这样的


by _buzhidao_ @ 2023-05-06 21:36:43

@1234zr 数组开大是会报错


by 123456zzr @ 2023-05-06 21:42:32

@__er 谢谢佬指点


| 下一页