Submission #21283

#TimeUsernameProblemLanguageResultExecution timeMemory
21283suzy동전 (kriii4_E)C++11
100 / 100
69 ms62888 KiB
#include <stdio.h>
#include <string.h>

#define MOD 1000000007

int g[251];

int gr(int n) {
    if(n==0) return 0;
    if(g[n]>=0) return g[n];
    bool v[251]={false};
    for(int i=1;i<=n;i++) {
        for(int j=i;j<=n;j++)
            v[gr(i-1)^gr(n-j)]=true;
    }
    int res=0;
    while(v[res]) res++;
    return g[n]=res;
}

int d[251][251][251];
int f(int gn, int c, int k) {
    if(k==0) return (gn^gr(c))==0;
    if(d[gn][c][k]>=0) return d[gn][c][k];
    return d[gn][c][k]=(f(gn,c+1,k-1)+f(gn^gr(c),0,k-1))%MOD;
}

int main() {
    memset(g,-1,sizeof(g));
    memset(d,-1,sizeof(d));
    int n;
    scanf("%d",&n);
    printf("%d\n",f(0,0,n));
    return 0;
}

Compilation message (stderr)

D.cpp: In function 'int main()':
D.cpp:32:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...