牛客练习赛27.B.手办(枚举)
2024-09-26 20:42:40
orz zzx!
题目看似要求$$\sum_{k=1}n\sum_{a=1}k\sum_{b=1}^k[k\mid a\times b]$$
实际我们可以求$$\sum_{k=1}^n\sum_a\sum_b\sum_c[a\times b\times c=k]$$
再实际就是求$$\sum_a\sum_b\sum_c[a\times b\times c\leq k]$$
也就是\(a\times b\times c\leq k\)的有序三元组个数。。
那么我们枚举\(a\leq b\leq 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\n",ans%mod);
return 0;
}
最新文章
- 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)
- 洛谷 P1387 最大正方形 Label:奇怪的解法
- linux top命令中各cpu占用率含义
- 数码管问题(c++实现)
- Linux objcopy命令
- spring注入参数详解
- 使用DBMS_STATS来收集统计信息【转】
- C# JavaScriptSerializer 解析Json数据(多方法解析Json 三)
- 使用struts taglib导致java.lang.NullPointerException: Module &#39;null&#39; not found.
- 实战项目:通过当当API将订单抓取到SAP(一)
- HTML+CSS D08浮动
- Travis CI实现持续部署
- Spring MVC简单原理
- Mysql--执行计划 Explain
- Java基础 -- final关键字
- NOIP2018游记-退役之战
- 第4周小组作业:WordCount优化
- 使用 Portainer UI 管理 Docker 主机
- java用poi读取Excel表格中的数据
- Linux网卡配置文件参数注释