栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3458 A Simple Math Problem

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3458 A Simple Math Problem

#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<map>#include<set>#include<vector>using namespace std;typedef long long lld;#define pb push_back#define mp make_pair#define X first#define Y second#define inf 0xffffffflld mod;struct mat{lld m[2][2];mat(){}mat operator *(mat b){mat c;for(int i=0;i<2;i++)for(int j=0;j<2;j++)c.m[i][j]=0;for(int i=0;i<2;i++)for(int k=0;k<2;k++)if(m[i][k]){for(int j=0;j<2;j++)c.m[i][j]=(c.m[i][j]+(m[i][k]*b.m[k][j])%mod)%mod;}return c;}mat operator ^(lld n){mat a,c;for(int i=0;i<2;i++)for(int j=0;j<2;j++){a.m[i][j]=m[i][j];if(i == j)c.m[i][j]=1;elsec.m[i][j]=0;}for(;n;n>>=1){if(n&1)c=c*a;a=a*a;}return c;}};int main(){lld a,b,n;while(cin >> a >> b >> n){n/=2;mod=(a+b)*2;lld x=(a+b)*2;x=(x%mod+mod)%mod;lld y=-(a-b)*(a-b);y=(y%mod+mod)%mod;mat A;A.m[0][0]=x;A.m[1][0]=y;A.m[0][1]=1;A.m[1][1]=0;mat B=A^n;lld ans=B.m[0][0];ans=(ans*2)%mod;ans=(ans+mod-1)%mod;cout << ans << endl;}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379081.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号