有些題其實有很多種方法,利用數學往往有奇效,並且極爲簡潔,高效
這個題就是中學的環形塗色問題,是有公式的
最簡形式如下
#include<stdio.h>
#include<math.h>
int main(void)
{
int n;
while (scanf("%d", &n) != EOF) {
printf("%0.f\n", n==1?3:(n%2==0?pow(2.0, n) + 2:pow(2.0, n) - 2));
}
return 0;
}
當n=1時,直接爲k種顏色
除此之外,爲奇數時2^n-2,
爲偶數時2^n+2.
翻譯代碼如下
#include<stdio.h>
#include<math.h>
int main(void)
{
int n;
while (scanf("%d", &n) != EOF) {
if (n == 1) {
printf("3\n");
} else {
if (n % 2==0) {
printf("%0.f\n", pow(2.0, n) + 2);
} else {
printf("%0.f\n", pow(2.0, n) - 2);
}
}
}
return 0;
}