Cod sursa(job #594227)

Utilizator SpiderManSimoiu Robert SpiderMan Data 6 iunie 2011 17:53:39
Problema Poligon Scor 0
Compilator cpp Status done
Runda Lista lui wefgef Marime 1.02 kb
# include <cstdio>
# include <cstring>

const char *FIN = "poligoane.in", *FOU = "poligoane.out" ;
const int MAX = 2005 ;

int S[MAX][MAX] ;
int T, N, mod ;

int main ( void ) {
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    for ( scanf ( "%d", &T ) ; T ; --T ) {
        scanf ( "%d %d", &N, &mod ) ;
        memset ( S, 0, sizeof ( S ) ), S[0][0] = 1 ;
        for ( int i = 1; i <= N; ++i ) {
            S[0][i] = S[0][i - 1] ;
        }
        for ( int i = 3; i <= N; ++i ) {
            for ( int j = 3; j <= i; ++j ) {
                S[i][j] = S[i][j - 1] + S[i - j][j] ;
                if ( S[i][j] >= mod ) S[i][j] -= mod ;
            }
            for ( int j = i + 1; j <= N; ++j ) {
                S[i][j] = S[i][j - 1] ;
            }
        }
        for ( int i = 0; i <= N; ++i, printf ( "\n" ) ) {
            for ( int j = 0; j <= N; ++j ) {
                printf ( "%d ", S[i][j] ) ;
            }
        }
        printf ( "%d\n", S[N][N] ) ;
    }
}