czwartek, 5 stycznia 2012

liczba rozwiązań

#define N 388
typedef unsigned long long int uint;
 
void zero(uint * w){int i;  for(i=0;i<=N;i++) w[i]=0;}
   
void conv(uint * w, uint * a, int s, int e, int h){
   int i,j,jj;
   zero(w); if(e>N/h) e=N/h;
   for(j=s*h,jj=s; jj++<=e; j+=h)
      for(i=0; i+j<=N; i++)  
         w[i+j] +=a[i];
}
int main(){
   uint  w[N+1], a[N+1];
   int i;
   zero(a);  
   for(i=0;i<=N;i++) a[i]=1;
   conv(w, a, 0, N,  2);
   conv(a, w, 0, N,  5);
   conv(w, a, 0, N, 10);
   conv(a, w, 0, N, 20);
   conv(w, a, 0, N, 50);
   conv(a, w, 0, N,100);
   conv(w, a, 0, N,200);
 
   printf("%llu\n",w[N]);
   //for(i=50>N?N:50;i>=0;i--)      
   for( i=0; i<=N; i++ )
      printf("%4d %20llu \n", i, w[i]);
   return 0;
}

Brak komentarzy:

Prześlij komentarz