xtuexam 冰墩墩与颜色 1516

冰墩墩与颜色

Accepted : 58Submit : 694
Time Limit : 1000 MSMemory Limit : 65536 KB

冰墩墩与颜色

题目描述

冰墩墩喜欢丰富多彩的颜色,TA想把一个1×n的格子都涂上“RGB”中的某一种颜色,但是要保证有且仅有一组相邻的格子是同色的。

TA想知道一共有多少组涂色方案?

输入格式

第一行是一个整数T (1≤T≤1000),表示样例的个数。 以后每行一个整数n (2≤n≤106), 表示格子的数量

输出格式

每行输出一个样例的结果,为一个整数,由于值可能很大,请将结果对109+7取模。

样例输入

3
2
3
4

样例输出

3
12
36

 

Source Code

Problem: 1516		User: 202205567311
Memory: 1432K		Time: 0MS
Language: G++		Result: Accepted
Source Code

#include<stdio.h>
#define MOD 1000000007
long long quickpow2(int a)//快速幂,去学一下比较好
{
    long long gg;
    if (a == 1) return 2;
    if (a % 2)
    {
        gg=quickpow2((a - 1) / 2) % MOD;
        return    2 * gg*gg % MOD;
    }
    else
    {
        gg=quickpow2(a / 2) % MOD;
        return gg*gg % MOD;
    }
}
int main()
{
    int t, i, input;
    long long sum;
    scanf("%d", &t);
    while (t--)
    {
        sum = 0;
        scanf("%d", &input);
        if (input == 2)
        {
            printf("3\n");
            continue;
        }
        sum = 3;
        sum = sum * quickpow2(input - 2) % MOD;//纯纯一道数学题,属于朱昊鲲2000里的进阶版(doge) 其实原理很简单,就是高中的涂色题,不考虑条件就是3X2X2X2......
n个空有n-1个把颜色定位的方案,然后对于每种方案都是3X2X2....X1(确定下来的一个)
        sum = (sum * (input - 1)) % MOD;
        printf("%d\n", sum);

    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值