有些题其实有很多种方法,利用数学往往有奇效,并且极为简洁,高效
这个题就是中学的环形涂色问题,是有公式的
最简形式如下
#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;
}