当前位置: 首页 > news >正文

P14813 [CCPC 2024 哈尔滨站] 奇怪的上取整 个人题解

题目链接

题目大意

给了你一个函数 \(f(a,b)\),让你求 \(\sum_{i=1}^a f(a,i)\) 的值。

Solution

首先我们来看 \(f(a,b)\) 到底是求得啥,其实把伪代码翻译成过来其实就是让 \(b\) 一直递减,直至减到能被 \(a\) 整除,返回 \(a/b\) 的值。

能被 \(a\) 整除的肯定是 \(a\) 的约数了,所以 \(f(a,b)\) 返回的值其实就是 \(a\) 除以 \(\le b\) 的最大约数的值。题目让我们求 \(\sum_{i=1}^a f(a,i)\),我们可以发现,\(a\) 的一个约数到另一个约数之间的 \(f(a,i)\) 的值都是 \(a\) 除以前一个约数的值,然后我们就发现 \(a\) 的每一个约数间隔中 \(f(a,i)\) 的加和其实就是这段间隔的距离乘上 \(a\) 除以这段间隔前面的那一个约数。

然后我们可以先把 \(a\) 的约数处理出来,然后把每段间隔的贡献加起来。比如样例中 \(a=114514\) 的情况(图画得有点丑,请见谅):图中每条线代表着每个间隔与其对应的 \(a\) 除这段间隔前一个约数的值相乘,但是我们发现与样例结果少 \(1\),那是因为这张图中只把间隔算了进去,相当于是算了 \(a-1\) 个数,最后一个当 \(i=a\) 的情况没算,而 \(i=a\) 时正好是自己除以自己,所以结果应该 \(+1\)

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
inline int read(){int x=0,f=1;char c=getchar();while(c<'0' || c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0' && c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}
int T=read(),f[N];
signed main(){while(T--){int n=read(),ans=0,cnt=0;for(int i=1;i*i<=n;i++){//处理约数 if(n%i==0){f[++cnt]=i;if(i!=n/i)f[++cnt]=n/i;}}sort(f+1,f+cnt+1);//这里要排个序,因为上边找约数时是对半找的 for(int i=2,j=cnt;i<=cnt,j>=2;i++,j--)ans+=(f[i]-f[i-1])*f[j];//统计每一段间隔内的答案 ans++;printf("%lld\n",ans);}return 0;
}
http://www.jsqmd.com/news/115631/

相关文章:

  • 从零开始掌握大数据建模:Hadoop与Spark实战解析
  • 计算机毕业设计springboot基于信息加密的校园迎新微信小程序 SpringBoot 架构下融合安全加密的大学新生指引微信小程序 基于密文传输与 SpringBoot 的高校迎新移动小程序
  • 西电李龙团队6G智能超表面突破
  • 在电子测试中实施自动化测试设备(ATE)
  • DeepSeek引爆新一轮AI投资热潮,2025年这些赛道值得关注!
  • 计算机毕业设计springboot“智享圈”新媒体学习网站 基于SpringBoot的“智享汇”新媒体在线学习社区 SpringBoot驱动的“知媒学堂”互动式新媒体资源平台
  • 深圳到长沙株洲湘潭衡阳邵阳岳阳常德张家界搬家公司搬家物流推荐!跨省搬家排行榜 - 物流人
  • 1Arduino 简介
  • RAG框架选型实战:RAGFlow、Dify、n8n、coze四大框架全方位对比+落地决策树,避坑必看!
  • 大模型应用开发:从RAG到Agent的智能问答系统优化之路,解决场景区分不清的难题
  • 大模型应用开发:从RAG到Agent的智能问答系统优化之路,解决场景区分不清的难题
  • UVa 12018 Juice Extractor
  • JSP标签JSTL标签EL表达式
  • 大数据工程师必看:批处理性能优化的10个黄金法则
  • ProcessExplorer_17.09_x64-Chs 新版本升级:我看到的区别与优势(含升级思路与注意点)
  • SpringBoot勤工助学信息管理高效的平台|1125(领完整源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、全套文案
  • COMSOL激光超声仿真:激光激发超声波的产生瑞利波的数值模拟 版本为6.1,低于此版本打不开此模型
  • AI Agent在企业数字化转型中的关键角色与实施策略
  • 从零到飞:四旋翼无人机智能控制与路径规划全解析
  • 3Arduino IDE 安装
  • AI Agent架构师必备:30个核心术语速成指南
  • 水凝膜、电镀钢化膜和UV光固膜哪个更防指纹,哪个透光更高呢?排序一下?
  • 【节点】[LinearToGammaSpaceExact节点]原理解析与实际应用
  • 2Arduino 板型号
  • 大模型岗位全解析:从预训练到应用开发,5大梯队深度指南+2026转型攻略
  • 【硕士论文完美复现】【价格型需求响应】基于需求侧响应的配电网供电能力综合评估(Python代码实现) - 指南
  • 8款AI论文辅助工具全面评测:改写与原创写作能力分析
  • 详细介绍:测试用例的八大核心要素
  • 线性筛素数 - Rye
  • 从“软件3.0”到“深度求索”:我们这代程序员,正站在一个怎样的路口?