站外题求助
  • 板块学术版
  • 楼主liuhaoyan0323
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/17 22:43
  • 上次更新2024/7/18 08:46:21
查看原帖
站外题求助
921177
liuhaoyan0323楼主2024/7/17 22:43

题目,考数学,求调代码,30pts,RE+WA

#include<bits/stdc++.h>
#define int long long
using namespace std;
char s[10005],Fl[207][10005],Fr[207][10005];
int n,len,p,ls[50000005],f[50000005];
signed main(){
    scanf("%lld%lld%lld%s",&n,&len,&p,s);
    Fl[0][0]=Fr[0][0]='0';
    Fl[1][0]=Fr[1][0]='1';
    ls[0]=ls[1]=1;
    for(int i=2;i<=100;++i){
        ls[i]=(ls[i-1]+ls[i-2])%p;
        for(int j=0;j<ls[i];++j){
            Fl[i][j]=(j<ls[i-1]?Fl[i-1][j]:Fl[i-2][j-ls[i-1]])%p;
            Fr[i][j]=(j<ls[i-2]?Fr[i-2][j]:Fr[i-1][j-ls[i-2]])%p;
        }
    }
    f[0]=f[1]=0;
    if(len==1)f[s[0]-'0']=1;
    for(int i=2;i<=n;++i){
        f[i]=(f[i-1]+f[i-2])%p;
        for(int j=1;j<len;++j)if(j<=ls[i-1]&&len-j<=ls[i-2]){
            for(int k=0;k<len;++k)if(s[k]!=(k<j?Fr[i-1][j-1-k]:Fl[i-2][k-j]))goto o;
            ++f[i];
            f[i]%=p;
            o:;
        }
    }
    printf("%lld\n",f[n]%p);
    return 0;
}
2024/7/17 22:43
加载中...