Keyword: combination
Algorithm:
First calculate how many ways can the cube be colored by exactly N color.
Then use simple math to multiply C(n,i) by the methods, and you'll get the answer.
However, the hardest part is to calculate how many ways are there when exactly N colors are used. :(
Code:
#include<cstdio>
long long int C( long long int m, long long int n )
{
long long int ans = 1;
for( long long int i = 1; i <= n; ++i )
ans *= m - i + 1, ans /= i;
return ans;
}
int main()
{
long long int n, base[ 7 ] = { 0, 1, 8, 30, 68, 75, 30 };
while( scanf( "%lld", &n ) && n )
{
long long int ans = 0;
for( long long int i = 1; i <= 6 && i <= n; ++i )
ans += C( n, i ) * base[ i ];
printf( "%lld\n", ans );
}
return 0;
}
沒有留言:
張貼留言