Square Coins
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4675 Accepted Submission(s): 3166
There are four combinations of coins to pay ten credits:
ten 1-credit coins,
one 4-credit coin and six 1-credit coins,
two 4-credit coins and two 1-credit coins, and
one 9-credit coin and one 1-credit coin.
Your mission is to count the number of ways to pay a given amount using coins of Silverland.
#include <stdio.h>
#include <memory.h>
#define N 301
int r[N];
int t[N];
void init(){
int i,j,k;
for( i = 0; i < N; i++){
r[i] = 1;
t[i] = 0;
}
for( k = 2; k <= 17; k++){
for( i = 0; i < N; i++){
for( j = 0; j < N; j += k*k) {
if( r[i] != 0 && i + j < N){
t[i+j] += r[i];
}
}
}
for( i = 0; i < N ; i++){
r[i] = t[i];
t[i] = 0;
}
}
}
int main()
{
int x;
init();
while(scanf("%d",&x),x){
printf("%d\n",r[x]);
}
return 0;
}