Cod sursa(job #139129)

Utilizator za_wolfpalianos cristian za_wolf Data 19 februarie 2008 19:10:21
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
#include<string.h>
#define NMAX 9005
int p,n,a,b,m,t,i,j,l,k,x[NMAX],y[3][NMAX];
int z[NMAX];
int main()
{
	freopen("numere6.in","r",stdin);
	freopen("numere6.out","w",stdout);
	scanf("%d%d",&a,&b);
	for (i=1;i<=9;i++)
		if (b%i==0)
		{
			x[++x[0]]=i;
			y[1][i]=1;
		}
	for (i=1;i<=b;i++)
	{
		if (b%i==0)
			z[++n]=i;
	}
	k=1;
	t=2;
	for (i=2;i<=a;i++)
	{

		for (j=1;j<=n;j++)
//			for (l=1;l<=x[0];l++)
			{
			p=z[j]*x[1];
			y[t][p]=0;
			if (p<=b)
			{
				y[t][p]+=(y[k][z[j]]);
				while (y[t][p]>=9973)
				y[t][p]-=9973;
			}
			}



		for (j=1;j<=n;j++)
			for (l=2;l<=x[0];l++)
			{
			p=z[j]*x[l];
			if (p<=b)
			{
				y[t][p]+=(y[k][z[j]]);
				while (y[t][p]>=9973)
				y[t][p]-=9973;
			}
			}
		if (i%2==0)
		{
			k=2;
			t=1;
		}
		else
		{
			k=1;
			t=2;
		}
//      memset(y[t],0,sizeof(y[t]));


	}
	printf("%d\n",y[k][b]);
	return 0;
}