Codeforces Round #324 (Div. 2) B. Kolya and Tanya (快速幂)
2016-02-14 21:42
387 查看
B. Kolya and Tanya
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Kolya loves putting gnomes at the circle table and giving them coins, and Tanya loves studying triplets of gnomes, sitting in the vertexes of an equilateral triangle.
More formally, there are 3n gnomes sitting in a circle. Each gnome can have from1 to3 coins. Let's number the places in the order they occur in the circle
by numbers from0 to3n - 1, let the gnome sitting on thei-th place haveai
coins. If there is an integeri (0 ≤ i < n) such thatai + ai + n + ai + 2n ≠ 6,
then Tanya is satisfied.
Count the number of ways to choose ai so that Tanya is satisfied. As there can be many ways of distributing coins, print the remainder of this number modulo109 + 7.
Two ways, a and b, are considered distinct if there is indexi (0 ≤ i < 3n), such thatai ≠ bi
(that is, some gnome got different number of coins in these two ways).
Input
A single line contains number n (1 ≤ n ≤ 105) — the number of the gnomes divided by three.
Output
Print a single number — the remainder of the number of variants of distributing coins that satisfy Tanya modulo109 + 7.
Sample test(s)
Input
Output
Input
Output
Note
20 ways for n = 1 (gnome with index0 sits on the top of the triangle, gnome1 on the right vertex, gnome
2 on the left vertex):
题意:一个环,上面有3n个点,一个点的值可以是1,2,3,问不存在a[i]+a[i+1]+a[i+2]=6这种情况的方案数
思路:列举可知道,存在那种情况的三个点为:123,132,213,222,231,312,321,共有7个,所以说
结果为3^(3*n)-7^n,快速幂一下就好了。。
ac代码:
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Kolya loves putting gnomes at the circle table and giving them coins, and Tanya loves studying triplets of gnomes, sitting in the vertexes of an equilateral triangle.
More formally, there are 3n gnomes sitting in a circle. Each gnome can have from1 to3 coins. Let's number the places in the order they occur in the circle
by numbers from0 to3n - 1, let the gnome sitting on thei-th place haveai
coins. If there is an integeri (0 ≤ i < n) such thatai + ai + n + ai + 2n ≠ 6,
then Tanya is satisfied.
Count the number of ways to choose ai so that Tanya is satisfied. As there can be many ways of distributing coins, print the remainder of this number modulo109 + 7.
Two ways, a and b, are considered distinct if there is indexi (0 ≤ i < 3n), such thatai ≠ bi
(that is, some gnome got different number of coins in these two ways).
Input
A single line contains number n (1 ≤ n ≤ 105) — the number of the gnomes divided by three.
Output
Print a single number — the remainder of the number of variants of distributing coins that satisfy Tanya modulo109 + 7.
Sample test(s)
Input
1
Output
20
Input
2
Output
680
Note
20 ways for n = 1 (gnome with index0 sits on the top of the triangle, gnome1 on the right vertex, gnome
2 on the left vertex):
题意:一个环,上面有3n个点,一个点的值可以是1,2,3,问不存在a[i]+a[i+1]+a[i+2]=6这种情况的方案数
思路:列举可知道,存在那种情况的三个点为:123,132,213,222,231,312,321,共有7个,所以说
结果为3^(3*n)-7^n,快速幂一下就好了。。
ac代码:
#include<stdio.h> #include<math.h> #include<string.h> #include<stack> #include<set> #include<queue> #include<vector> #define MAXN 1010000 #define LL long long #define ll __int64 #include<iostream> #include<algorithm> #define INF 0xfffffff #define mem(x) memset(x,0,sizeof(x)) #define PI acos(-1) using namespace std; LL gcd(LL a,LL b){return b?gcd(b,a%b):a;} LL lcm(LL a,LL b){return a/gcd(a,b)*b;} ll powmod(ll a,LL b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;} //head int main() { int n; while(scanf("%d",&n)!=EOF) { ll a=powmod(3,3*n,1000000007); ll b=powmod(7,n,1000000007); //printf("%I64d %I64d\n",a,b); printf("%I64d\n",(a-b+1000000007)%1000000007); } return 0; }
相关文章推荐
- BZOJ_P2190&&Codevs_P2296 [SDOI2008]仪仗队(欧拉函数线性筛)
- 使用Kotlin进行Android开发
- HDOJ 2262 Where is the canteen (高斯消元 + bfs)
- Python基础(下)
- (0)Leap Motion简介
- Get和Post区别
- OC重要知识点回顾
- ES2015系列:理解class与prototype继承
- 今天自已建了个nginx做的google fonts的代理
- web前端职业规划(转)
- C#索引器
- Xcode 7.0 SDK(Software Development Kit) 及 Sandbox(沙盒) 存放路径
- jquery.cookie中的操作之与换肤
- Netty与Google的protobuf使用
- poj 1033 文件移动
- 【JavaScript】对象的操作
- LeetCode 2015.9.28-2015.10.5 234,283,263,260,268,51,52
- LeetCode 2015.10.6 287,41,154,117,128,33,81,72,138,133,164
- RocEDU.阅读.写作《乌合之众》(二)
- USACO Transformations 解题日志