Hey ppl i found this code on the net but im not able to make head or tail out of it, so im givin u the ques and this is the solution to this code so can someone please explain to me what this code is doing!!!!!!!!!!!!!!!!!!!!!!!!

PS the code is working perfectly for all the test cases..and plzzzz itz kinda urgent

QUESTION

Given is an alphabet {0, 1, ... , k}, 0 <= k <= 9 . We say that a word of length n over this alphabet is tight if any two neighbour digits in the word do not differ by more than 1.

Input is a sequence of lines, each line contains two integer numbers k and n, 1 <= n <= 100. For each line of input, output the percentage of tight words of length n over the alphabet {0, 1, ... , k} with 5 fractional digits.

Sample input

4 1

2 5

3 5

8 7

Output for the sample input

100.00000

40.74074

17.38281

0.10130

SOLUTION

#include <stdio.h>

double x[100][10]; double s;

main(){

int i,j,k,n;

while (2 == scanf("%d%d",&k,&n)){

k++;

for (i=0;i<n;i++) for (j=0;j<k;j++) x[i][j] = 0;

for (i=0;i<k;i++) x[0][i] = 100.0/k;

for (i=1;i<n;i++) {

for (j=0;j<k;j++) x[i][j] += x[i-1][j]/k;

for (j=1;j<k;j++) x[i][j] += x[i-1][j-1]/k;

for (j=0;j<k-1;j++) x[i][j] += x[i-1][j+1]/k;

}

for (s=i=0;i<k;i++) s += x[n-1][i];

printf("%0.5lf\n",s);

}

}

PS the code is working perfectly for all the test cases..and plzzzz itz kinda urgent

QUESTION

Given is an alphabet {0, 1, ... , k}, 0 <= k <= 9 . We say that a word of length n over this alphabet is tight if any two neighbour digits in the word do not differ by more than 1.

Input is a sequence of lines, each line contains two integer numbers k and n, 1 <= n <= 100. For each line of input, output the percentage of tight words of length n over the alphabet {0, 1, ... , k} with 5 fractional digits.

Sample input

4 1

2 5

3 5

8 7

Output for the sample input

100.00000

40.74074

17.38281

0.10130

SOLUTION

#include <stdio.h>

double x[100][10]; double s;

main(){

int i,j,k,n;

while (2 == scanf("%d%d",&k,&n)){

k++;

for (i=0;i<n;i++) for (j=0;j<k;j++) x[i][j] = 0;

for (i=0;i<k;i++) x[0][i] = 100.0/k;

for (i=1;i<n;i++) {

for (j=0;j<k;j++) x[i][j] += x[i-1][j]/k;

for (j=1;j<k;j++) x[i][j] += x[i-1][j-1]/k;

for (j=0;j<k-1;j++) x[i][j] += x[i-1][j+1]/k;

}

for (s=i=0;i<k;i++) s += x[n-1][i];

printf("%0.5lf\n",s);

}

}

## Comment