分析
这题除了公式难推一点外没有什么难点了,重要的还是看公式。
首先根据gcd的求法可以知道,F[i][j]=[i+kj][j]
然后接下来的所有式子几乎都利用这个展开。
#include
const int lqs=700;
int f[lqs][lqs],c[lqs][lqs];
int gcd(int x,int y,int &c){
c=0;
while(y){
c++;
int t=x%y;
x=y;
y=t;
}
return c*x*x;
}
int main(){
int T;
scanf("%d",&T);
for(int i=1;i<=666;i++)
for(int j=1;j<=666;j++)
f[i][j]=gcd(i,j,c[i][j]);
while(T--){
int n,m,p;
scanf("%d%d%d",&n,&m,&p);
#define ll long long
ll ans=0;
for(int j=1;j<=m;j++)
for(int i=1;i<=j&&i<=n;i++)
for(int k=0;k