#codejam problem
A R x C matrix of positive numbers wraps around a drum. Each
number represents the number of cells that share an edge with the cell of the
same number. For eg the front and back of the drum can be :
3 3 3
3 3 3
2 2 2
The top and bottom of the drum can be different so the line
containing 2 can appear in the first line instead of the last and this will
make it a different arrangement. If an arrangement can be rotated to get
another, they are the same. How many different arrangements exist for given R x
C
const int
a[5][6]={1,1,4,1,1,10,2,2,2,6,2,2,1,1,7,1,1,19,1,1,7,9,1,19,2,2,14,10,2,92};
int GetMinArrangements(int R, int C)
{
assert(R > 0 && C> 0);
Int answer = 0;
For (int I = 1; I <= C; i++)
{
Int d = gcd(C, i)
answer += a[R-2][d-1];
}
return answer/C;
}
Int gcd(int x, int y)
{
If y == 0 return x;
return gcd(y, x % y);
}
No comments:
Post a Comment