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就没问题了
答案就是 ans
2 - 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相关推荐

  1. 2020牛客国庆集训派对day1 A.ABB

    2020牛客国庆集训派对day1 A.ABB 题目链接 题目描述 Fernando was hired by the University of Waterloo to finish a develo ...

  2. 2020牛客国庆集训派对day1 C. Bob in Wonderland

    Bob in Wonderland 题意: 一棵树,问最少移动多少次边可以使其变成一个链? 移动是指:从原位置拆下并连到新位置,这样算一次 题解: 错误思路 我一开始在想既然求最少移动次数,那我们就尽 ...

  3. ABB (2020牛客国庆集训派对day1)

    ABB 题意: 长度为n的字符串,问最少添加多少字符可以使其构成回文字符串 题解: 最长回文字符串我的第一反应是manacher马拉车算法,那我们直接马拉车找到已有最长回文串,然后总长度减去不就是答案 ...

  4. 2020牛客国庆集训派对day2 补题J

    2020牛客国庆集训派对day2 补题J:VIRUS OUTBREAK 题目描述 The State Veterinary Services Department recently reported ...

  5. 2020牛客国庆集训派对day3 I.Rooted Tree(哈代-拉马努金拆分数列)

    2020牛客国庆集训派对day3 I.Rooted Tree(哈代-拉马努金拆分数列) 题目 https://ac.nowcoder.com/acm/contest/7830/I 题意 给你n个点,问 ...

  6. 2020牛客国庆集训派对day2 H-STROOP EFFECT(英语题)

    2020牛客国庆集训派对day2 H-STROOP EFFECT(英语题) 题目 https://ac.nowcoder.com/acm/contest/7818/H 题意 这题目真的太难读懂了,赛后 ...

  7. 2020牛客国庆集训派对day8 G-Shuffle Cards(扩展STL容器,rope可持久化平衡树)

    2020牛客国庆集训派对day8 G-Shuffle Cards(扩展STL容器,rope可持久化平衡树) 题目 https://ac.nowcoder.com/acm/contest/7865/G ...

  8. (花里胡哨)New Game!(牛客国庆集训派对Day1)

    链接:https://ac.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言209 ...

  9. 2020牛客国庆集训派对day2 F题 Java大数处理

    题目: 链接:https://ac.nowcoder.com/acm/contest/16913/F 来源:牛客网 The following code snippet calculates the ...

最新文章

  1. 青龙羊毛——快手极速版(教程)
  2. 计算机网络·用户代理和浏览器 发送邮件分别需要的协议
  3. qt designer 插入图片_老同学春节祝福语图片
  4. flink的Yarn模式
  5. UltraCompare 22 for Mac(文件比较工具)
  6. oracle注释 kole_t2u,oracle4
  7. Linux 下把服务设置自启动
  8. 小数形式与科学计数法转换c语言,BUAA小数形式与科学计数法转换(简)
  9. 谷歌地球(Google Earth) 7.3.2.5776
  10. STM32F107 资料
  11. 【单片机】2.4 AT89S52的存储器结构
  12. 低资源和跨语言NER任务的新进展:词级别数据增强技术
  13. python课本图片_python爬虫当当网python书籍图片
  14. 解决跳转ICP备案网页报400的问题
  15. python制作二维码生成器3.0
  16. rap技术原理_那些你可能没有听到的技术特色Rap
  17. Python编程:loguru管理日志输出
  18. 计算机 北航 在线作业,北航计算机组成原理在线作业
  19. DP(动态规划)入门(一)
  20. 前序遍历、中序遍历、后序遍历

热门文章

  1. java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题
  2. ksweb如何安装php5.6_Android端的服务器容器 KSWEB PHP+MySQL环境搭建及应用
  3. Java交流|面试最后一问:你有什么问题想问我吗?
  4. 六元均匀直线阵的各元间距为_实验二 均匀直线阵
  5. oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)
  6. etcd php,etcd集群备份和数据恢复
  7. 后端根据百度地图真实路径距离_导航软件哪家强?实测百度地图and高德地图哪个更靠谱...
  8. infor wms 项目启动_广汽本田增城工厂No.2L WMS项目正式启动
  9. 孕妇可以在计算机教室待吗,电脑对孕妇有辐射吗?孕妇使用电脑的注意事项
  10. 数据结构—— 基于二叉树的算术表达式求值