您的位置:首页 > 大数据 > 人工智能

hdoj 6050(2017 Multi-University Training Contest - Team 2) Funny Function

2017-08-29 20:27 549 查看
题目链接:Funny Function

题目大意:给定一个公式,算某项

题目思路:暴力打表,然后找规律



然后直接快速幂套板子就好了,记得算逆元(不过这规律一点也不好找。。。。)听说可以写矩阵快速幂,不过不会推出题人的公式,就不写了

#include <map>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

using namespace std;
typedef long long ll;
const int mod = 1e9+7;

ll quick_mod(ll a,ll b,ll mod)
{
ll ans = 1;
while(b)
{
if(b&1)
ans = (ans*a)%mod;
a = (a*a)%mod;
b >>= 1;
}
return ans;
}

int main(){
int t;
ll n,m;
scanf("%d",&t);
while(t--){
scanf("%lld%lld",&n,&m);
if(n&1){
ll ans = (quick_mod(quick_mod(2,n,mod)-1,m-1,mod)*2%mod+1)%mod*quick_mod(3,mod-2,mod)%mod;
printf("%lld\n",(ans+mod)%mod);
}
else{
ll ans = quick_mod(quick_mod(2,n,mod)-1,m-1,mod)*2%mod*quick_mod(3,mod-2,mod)%mod;
printf("%lld\n",(ans+mod)%mod);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐