zoukankan      html  css  js  c++  java
  • 牛客练习赛27.B.手办(枚举)

    题目链接

    orz zzx!

    题目看似要求$$sum_{k=1}^nsum_{a=1}^ksum_{b=1}^k[kmid a imes b]$$

    实际我们可以求$$sum_{k=1}^nsum_asum_bsum_c[a imes b imes c=k]$$

    再实际就是求$$sum_asum_bsum_c[a imes b imes cleq k]$$

    也就是(a imes b imes cleq k)的有序三元组个数。。
    那么我们枚举(aleq bleq c),统计它有多少个,最后再乘排列数。
    这样(a)只需枚举到(sqrt[3]n)(b)需要枚举到(sqrt{frac na})
    (a=b=c)时排列数只有(1),有两个数相等时排列数只有(3),其它的就乘(3!=6)

    #include <cmath>
    #include <cstdio>
    #define mod 2333
    typedef long long LL;
    
    int main()
    {
    	LL n; scanf("%lld",&n);
    	int ans=0;
    	for(int a=1; 1ll*a*a*a<=n; ++a)
    	{
    		ans=(ans+1+3*(n/a/a-a))%mod;
    		LL t=n/a;
    		for(int b=a+1,l=sqrt(t); b<=l; ++b)
    			ans=(ans+3/*每个枚举的b,c都可以等于b*/+6*(t/b-b))%mod;
    	}
    	printf("%d
    ",ans%mod);
    
    	return 0;
    }
    
  • 相关阅读:
    Java WebSocket生命周期
    软件网络总结
    js模态弹窗
    spring boot
    spring aop
    lvs分布式
    如何在大牛面前装逼
    Java学习的思考
    javase知识点
    <nginx+PHP>nginx环境下配置支持php7
  • 原文地址:https://www.cnblogs.com/SovietPower/p/9710475.html
Copyright © 2011-2022 走看看