HDOJ 1757 A Simple Math Problem
2013-05-19 14:44
435 查看
矩阵快速幂的水题
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<iomanip>
using namespace std;
struct aa
{
int a[11][11];
};
int mod;
aa f(aa m,aa n)
{
aa ans;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
{
ans.a[i][j]=0;
for(int k=0;k<10;k++)
ans.a[i][j]+=m.a[i][k]*n.a[k][j];
ans.a[i][j]%=mod;
}
return ans;
}
aa mul(aa m,long k)
{
aa ans;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
ans.a[i][j]=(i==j);
while(k)
{
if(k&1)
{
ans=f(ans,m);
}
k>>=1;
m=f(m,m);
}
return ans;
}
int main()
{
long n,sum;
int i,j;
while(scanf("%d%d",&n,&mod)!=EOF)
{
aa p,ans;
memset(p.a,0,sizeof(p.a));
for(i=0;i<10;i++)
{
scanf("%d",&p.a[0][i]);
}
for(i=1;i<10;i++)
p.a[i][i-1]=1;
sum=0;
if(n<10)
sum=n;
else
{
ans=mul(p,n-9);
for(i=0;i<10;i++)
sum+=ans.a[0][i]*(9-i);
}
printf("%d\n",sum%mod);
}
return 0;
}
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<iomanip>
using namespace std;
struct aa
{
int a[11][11];
};
int mod;
aa f(aa m,aa n)
{
aa ans;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
{
ans.a[i][j]=0;
for(int k=0;k<10;k++)
ans.a[i][j]+=m.a[i][k]*n.a[k][j];
ans.a[i][j]%=mod;
}
return ans;
}
aa mul(aa m,long k)
{
aa ans;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
ans.a[i][j]=(i==j);
while(k)
{
if(k&1)
{
ans=f(ans,m);
}
k>>=1;
m=f(m,m);
}
return ans;
}
int main()
{
long n,sum;
int i,j;
while(scanf("%d%d",&n,&mod)!=EOF)
{
aa p,ans;
memset(p.a,0,sizeof(p.a));
for(i=0;i<10;i++)
{
scanf("%d",&p.a[0][i]);
}
for(i=1;i<10;i++)
p.a[i][i-1]=1;
sum=0;
if(n<10)
sum=n;
else
{
ans=mul(p,n-9);
for(i=0;i<10;i++)
sum+=ans.a[0][i]*(9-i);
}
printf("%d\n",sum%mod);
}
return 0;
}
相关文章推荐
- hdoj 1757 A Simple Math Problem
- hdoj 1757 A Simple Math Problem 【矩阵快速幂】
- hdoj 1757 A Simple Math Problem
- hdoj-1757-A Simple Math Problem【矩阵的快速幂】
- hdoj 1757 A Simple Math Problem(转化为矩阵+矩阵乘法)
- HDOJ 1757 A Simple Math Problem
- HDOJ 1757 A Simple Math Problem
- 【矩阵乘法】hdu hdoj 1757 A Simple Math Problem
- HDOJ 1757 – A Simple Math Problem
- hdoj 1757 A Simple Math Problem 【矩阵快速幂】
- A Simple Math Problem(HDU 1757 构造矩阵)
- 矩阵裸题hdu 1757 A Simple Math Problem
- HDU - 1757 A Simple Math Problem(矩阵快速幂)
- hdu 1757 A Simple Math Problem(矩阵快速幂 水~)
- 1757 A Simple Math Problem
- HDU 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem (乘法矩阵)
- hdu 1757 A Simple Math Problem 矩阵基础题
- HDU 1757-A Simple Math Problem(矩阵快速幂)
- HDU - problem 1757 A Simple Math Problem【矩阵 + 快速幂】