Pagini recente » Cod sursa (job #2658942) | Cod sursa (job #1052503) | Cod sursa (job #1940646) | Cod sursa (job #2248524) | Cod sursa (job #43663)
Cod sursa(job #43663)
#include<stdio.h>
#define PIVOT 50000
int main(void)
{
int n,m;
long int x;
int s[PIVOT*2];
int s2[PIVOT*2];
FILE *f;
long i,j,e;
int pas=0;
//citeste datele de intrare
f=fopen("diamant.in","rt");
fscanf(f,"%d %d %ld",&n,&m,&x);
fclose(f);
//seteaza vectorul
for(i=0;i<PIVOT*2;i++)
{s[i]=0;s2[i]=0;}
//face toate variantele de monede
//presupunem ca putem obine suma 0
s[PIVOT]=1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
pas+=1;
//adauga moneda i*j
for(e=0;e<PIVOT*2;e++)
if((s[e]!=0))
{
s2[e-i*j]+=s[e];
s2[e+i*j]+=s[e];
s2[e-i*j]%=10000;
s2[e+i*j]%=10000;
}
//aduna sumele nou obtinute
for(e=0;e<PIVOT*2;e++)
{
if(s2[e]!=0) s[e]+=s2[e];
s2[e]=0;
s[e]%=10000;
}
}
//afiseaza solutia
f=fopen("diamant.out","wt");
fprintf(f,"%d\n",s[PIVOT+x]);
fclose(f);
//sf
return 0;
};