您的位置:首页 > 理论基础 > 计算机网络

http://acm.hdu.edu.cn/showproblem.php?pid=1005

2010-08-06 15:59 295 查看
]#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 2;
const int mod = 7;
struct Mat
{
int  num

;
Mat()
{
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
num[i][j] = 0;
}
};
Mat mal(Mat a, Mat b)
{
Mat r;
for(int i = 0; i < N; i++)
for(int k = 0; k < N; k++)
if(a.num[i][k])
for(int j = 0; j < N; j++)
if(b.num[k][j])
r.num[i][j] = (r.num[i][j] + a.num[i][k]* b.num[k][j]) % mod;
return r;
}
Mat mul(Mat a, Mat b, int n)
{
while(n)
{
if(n & 1)
{
n--;
b = mal(a, b);
}
else
{
n >>= 1;
a = mal(a, a);
}
}
return b;
}
int main()
{
int a, b, n;
while( scanf("%d %d %d", &a, &b, &n) != EOF && a + b + n)
{
if(n <= 2)
{
puts("1");
continue;
}
Mat init, unit, ans;
init.num[0][0] = a;	init.num[0][1]= b;
init.num[1][0] = 1;
unit.num[0][0] = 1;	unit.num[1][0] = 1;
ans = mul(init, unit, n - 2);
printf("%d/n", ans.num[0][0]);
}
return 0;
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  include struct