HDU5970

分析

这题除了公式难推一点外没有什么难点了,重要的还是看公式。
首先根据gcd的求法可以知道,F[i][j]=[i+kj][j]
然后接下来的所有式子几乎都利用这个展开。
HDU5970_第1张图片

#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

你可能感兴趣的:(HDU5970)