2020牛客国庆集训派对day1 Zeldain Garden
Zeldain Garden
题意:
问[L,R]内所有数的因子的数量和
题解:
如果传统暴力做肯定不行
我们来找找规律:
数字: 因子数目 1~n的因子数和
1 1 1
2 2 3=2+1/
3 2 5=3+1+1
4 3 8=4+2+1+1
5 2 10=5+2+1+1+1
6 4 14=
7 2 16=
8 4 20=
9 3 23=9+4+3+2+1+1+1+1+1
有发现什么规律?
可以推出:1—n的因子数和 =∑ (int)n/i (i是从1到n)
问我咋推出来的?
额。。“直觉”算能力吗?我在纸上把因子数和进行拆分就发现这样的规律
但是注意题目中的数据是1e12,感觉直接做还是不准,,O(n)肯定不行,此时就要往O(log n)或者O(√n)的方向去想
∑ (int)n/i其实是函数y=n/x的一个离散和
而这个函数是关于y=x对称,对称点为(√n,√n),图像面积是对称的,所以我们只需要求出√n数据范围内的答案即可,然后乘以2减去√n√n,其实就是去掉重复的正方形面积,正方形边长是√n,这样一来复杂度不就降低了,1e12就没问题了
答案就是 ans2 - t *t
t=sqrt(n)
小于sqrtN的因子在所有数中有多少:∑N/i (i=1,…,sqrtN)
大于sqrtN的因子在所有数中有多少: ∑N/i (i=1,…,sqrtN)
但是两者有重复部分
“因子对”里的数都小于sqrtN的那些因子其实被重复加了一遍,多加了Q * Q个因子
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;//用long long
ll work(ll n)//计算一个数的因子之和
{ll ans=0;ll t=sqrt(double(n));//根号nfor(int i=1;i<=t;i++){ans=ans+n/i;}ans=ans*2-t*t;//公式求和
}
int main ()
{ios::sync_with_stdio(false);ll n,m;cin>>n>>m;cout<<work(m)-work(n-1)<<endl;//从n-m的,跟前缀和差不多原理return 0;
}
2020牛客国庆集训派对day1 Zeldain Garden相关推荐
- 2020牛客国庆集训派对day1 A.ABB
2020牛客国庆集训派对day1 A.ABB 题目链接 题目描述 Fernando was hired by the University of Waterloo to finish a develo ...
- 2020牛客国庆集训派对day1 C. Bob in Wonderland
Bob in Wonderland 题意: 一棵树,问最少移动多少次边可以使其变成一个链? 移动是指:从原位置拆下并连到新位置,这样算一次 题解: 错误思路 我一开始在想既然求最少移动次数,那我们就尽 ...
- ABB (2020牛客国庆集训派对day1)
ABB 题意: 长度为n的字符串,问最少添加多少字符可以使其构成回文字符串 题解: 最长回文字符串我的第一反应是manacher马拉车算法,那我们直接马拉车找到已有最长回文串,然后总长度减去不就是答案 ...
- 2020牛客国庆集训派对day2 补题J
2020牛客国庆集训派对day2 补题J:VIRUS OUTBREAK 题目描述 The State Veterinary Services Department recently reported ...
- 2020牛客国庆集训派对day3 I.Rooted Tree(哈代-拉马努金拆分数列)
2020牛客国庆集训派对day3 I.Rooted Tree(哈代-拉马努金拆分数列) 题目 https://ac.nowcoder.com/acm/contest/7830/I 题意 给你n个点,问 ...
- 2020牛客国庆集训派对day2 H-STROOP EFFECT(英语题)
2020牛客国庆集训派对day2 H-STROOP EFFECT(英语题) 题目 https://ac.nowcoder.com/acm/contest/7818/H 题意 这题目真的太难读懂了,赛后 ...
- 2020牛客国庆集训派对day8 G-Shuffle Cards(扩展STL容器,rope可持久化平衡树)
2020牛客国庆集训派对day8 G-Shuffle Cards(扩展STL容器,rope可持久化平衡树) 题目 https://ac.nowcoder.com/acm/contest/7865/G ...
- (花里胡哨)New Game!(牛客国庆集训派对Day1)
链接:https://ac.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言209 ...
- 2020牛客国庆集训派对day2 F题 Java大数处理
题目: 链接:https://ac.nowcoder.com/acm/contest/16913/F 来源:牛客网 The following code snippet calculates the ...
最新文章
- 青龙羊毛——快手极速版(教程)
- 计算机网络·用户代理和浏览器 发送邮件分别需要的协议
- qt designer 插入图片_老同学春节祝福语图片
- flink的Yarn模式
- UltraCompare 22 for Mac(文件比较工具)
- oracle注释 kole_t2u,oracle4
- Linux 下把服务设置自启动
- 小数形式与科学计数法转换c语言,BUAA小数形式与科学计数法转换(简)
- 谷歌地球(Google Earth) 7.3.2.5776
- STM32F107 资料
- 【单片机】2.4 AT89S52的存储器结构
- 低资源和跨语言NER任务的新进展:词级别数据增强技术
- python课本图片_python爬虫当当网python书籍图片
- 解决跳转ICP备案网页报400的问题
- python制作二维码生成器3.0
- rap技术原理_那些你可能没有听到的技术特色Rap
- Python编程:loguru管理日志输出
- 计算机 北航 在线作业,北航计算机组成原理在线作业
- DP(动态规划)入门(一)
- 前序遍历、中序遍历、后序遍历
热门文章
- java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题
- ksweb如何安装php5.6_Android端的服务器容器 KSWEB PHP+MySQL环境搭建及应用
- Java交流|面试最后一问:你有什么问题想问我吗?
- 六元均匀直线阵的各元间距为_实验二 均匀直线阵
- oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)
- etcd php,etcd集群备份和数据恢复
- 后端根据百度地图真实路径距离_导航软件哪家强?实测百度地图and高德地图哪个更靠谱...
- infor wms 项目启动_广汽本田增城工厂No.2L WMS项目正式启动
- 孕妇可以在计算机教室待吗,电脑对孕妇有辐射吗?孕妇使用电脑的注意事项
- 数据结构—— 基于二叉树的算术表达式求值