zoukankan      html  css  js  c++  java
  • HDU5970

    分析

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

    #include<cstdio>
    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<c[i][j]&&i+k*j<=n;k++){
    					ll t1=(i+j*k)*1ll*j/f[i][j];
    					ll t2=c[i][j]*j*j*1ll/f[i][j];
    					ll t3=(n-(i+j*k))/(c[i][j]*j)+1;
    					ans=(ans+t1*t3%p+(t3-1)*t3/2%p*t2%p)%p;
    				}
    		printf("%lld
    ",ans);
    	}
    }
    
  • 相关阅读:
    java练习题2
    java练习题
    java输入输出
    字符集
    eclipse快捷键
    类和对象练习-people
    类和对象-三角形
    权限修饰符-输出求和阶乘
    权限修饰符-练习
    权限修饰符-father&&son
  • 原文地址:https://www.cnblogs.com/anyixing-fly/p/12990155.html
Copyright © 2011-2022 走看看