1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#define MIN(a,b) ((a)<(b)?(a):(b)) #define N 101 #define M 10001
int () { int dp[M] = {}; int square[N] = {}, i, j;
for (j = 1; j < M; ++j) dp[j] = 10001;
for (i = 1; i < N; ++i) square[i] = i*i;
for (i = 1; i < N; ++i) for (j = square[i]; j < M; ++j) dp[j] = MIN(dp[j - square[i]] + 1, dp[j]);
int n,Case; scanf("%d", &Case); while (Case--) { scanf("%d", &n); printf("%dn", dp[n]); }
return 0; }
|
近期评论