1091.c

来自「平时acm训练时ac的源代码」· C语言 代码 · 共 36 行

C
36
字号
#include <stdio.h>
#include <string.h>
#define min(x,y) ( (x)<(y)?(x):(y) )
#define max(x,y) ( (x)>(y)?(x):(y) )

int gcd( int a, int b ){
if ( !a ) return b;
return gcd(b%a,a);
}

int n, b, f;

int ways[51][51][51];

int getways( int d, int g, int last ){
if ( d==n ) return 1;

if ( ways[d][g][last] < 1000000 ) return ways[d][g][last];

int s=0, i,j;
for ( i=last; i<=b; i++ )
	if ( (j=gcd(i,g)) > 1 )
		s=min( 10000, s+getways(d+1,j,i+1) );

return ways[d][g][last]=s;
}

int main( void ){
memset( ways, 66, sizeof(ways) );

scanf( "%d %d", &n, &b );
printf( "%d\n", getways(0,0,2) );

return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?