第一部分

P1403 [AHOI2005]约数研究

题目描述

科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samuel II”进行数学研究。

小联最近在研究和约数有关的问题,他统计每个正数N的约数的个数,并以f(N)来表示。例如12的约数有1、2、3、4、6、12。因此f(12)=6。下表给出了一些f(N)的取值:

f(n)表示n的约数个数,现在给出n,要求求出f(1)到f(n)的总和。

输入输出格式

输入格式:

输入一行,一个整数n

输出格式:

输出一个整数,表示总和

输入输出样例

输入样例#1: 复制

3
输出样例#1: 复制

5

说明

【数据范围】

20%N<=5000

100%N<=1000000

200%N<=100000000000000

1000%N<=1000000000000000000000000000000000000000000000000000000000000000(63 0's)

本题原来基本上是一个暴力

不过结论比较重要

就是∑(i=1,n)d(i)=∑(i=1,n)(n/i)

此处下取整

这样的话发现对于比如说6

求右半部分为

6 3 2 1 1 1

有三个一

这重复计算了

这样可以实现二百分算法就是数论分块、

直接贴代码就行

#include<cstdio>
#include<iostream>
int n,ans=;
int main(){
scanf("%d",&n);
for(int i=,j;i<=n;i=j+){
j=n/(n/i);
ans+=(n/i)*(j-i+);
}
printf("%d",ans);
return ;
}

代码是对的!!!!!

1000分的算法需要反演等 达到n的三分之一次方logn

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

模积和

所求就是第一行

n《=1e9;

图片是用的别人的叫qingdaobaibai,谢谢!!!

这样就分块显然了

预备知识:

1.前面的那个题的内容
2.欧拉定理
3.(费马小)
4.乘法逆元
5.阿尔贝恒等式的一些知识
∑aibi=∑(k:1,n)∑(i:1,k)ai(bk-bk+1)+sabn
这里列举一下纲目 将在另一个合适的博客里写
∑ai∑bi=∑∑aibj

这是代码

#include<iostream>
#include<cstdio>
#define ll long long
#define p 19940417
#define ine2 9970209
#define ine6 3323403
using namespace std;
ll n,m;
ll calc(ll k,ll n)
{
ll tmp=;
for (ll i=,pos=;i<=k;i=pos+)
{
pos=min(n/(n/i),k);
(tmp+=(n/i)%p*(((pos+)*(pos)%p*ine2%p-(i-)*i%p*ine2%p+p)%p)%p)%=p;
}
return (tmp+p)%p;
}
ll calc0(ll n,ll m)
{
ll tmp=;
for (ll i=,pos=;i<=n;i=pos+)
{
pos=min(n/(n/i),m/(m/i));
(tmp+=(n/i)*(m/i)%p*((pos*(pos+)%p*(pos*+)%p*ine6%p-(i-)*i%p*(i*-)%p*ine6%p+p)%p)%p)%=p;
}
return (tmp+p)%p;
}
int main()
{
scanf("%lld%lld",&n,&m);
if (n>m) swap(n,m);
ll t1=calc(n,n),t2=calc(m,m),t3=calc(n,m),t4=calc0(n,m);
ll ans=((((ll)n*n%p-t1+p)%p)*(((ll)m*m%p-t2+p)%p)%p-((ll)n*n%p*m%p-(ll)t1*m%p-(ll)t3*n%p+t4%p+p*)%p+p)%p;
cout << ans << endl;
return ;
}

代码本非我打,感谢原出处的教学。

这样的话基本数论分块的两种模式就显然了

BZOJ 1968_P1403 [AHOI2005]约数研究--p2260bzoj2956-模积和∑----信息学中的数论分块的更多相关文章

  1. 洛谷P2260 [清华集训2012]模积和(容斥+数论分块)

    题意 https://www.luogu.com.cn/problem/P2260 思路 具体思路见下图: 注意这个模数不是质数,不能用快速幂来求逆元,要用扩展gcd. 代码 #include< ...

  2. 洛谷——P1403 [AHOI2005]约数研究

    P1403 [AHOI2005]约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工 ...

  3. 洛谷P1403 [AHOI2005] 约数研究 [数论分块]

    题目传送门 约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩, ...

  4. [AHOI2005]约数研究

    题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samu ...

  5. P1403 [AHOI2005]约数研究

    原题链接 https://www.luogu.org/problemnew/show/P1403 这个好难啊,求约数和一般的套路就是求1--n所有的约数再一一求和,求约数又要用for循环来判断.... ...

  6. P1403 [AHOI2005]约数研究 题解

    转载luogu某位神犇的题解QAQ 这题重点在于一个公式: f(i)=n/i 至于公式是怎么推出来的,看我解释: 1-n的因子个数,可以看成共含有2因子的数的个数+含有3因子的数的个数……+含有n因子 ...

  7. BZOJ1968 [Ahoi2005] 约数研究

    Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...

  8. 1968. [AHOI2005]约数研究【数论】

    Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input ...

  9. [luoguP1403] [AHOI2005]约数研究(这。。。)

    传送门 用类似筛法的原理,就好啦 ——代码 #include <cstdio> int n, ans; int a[1000001]; int main() { int i, j; sca ...

随机推荐

  1. ACM-ICPC 中可能会使用到的库

    sort(v.first(),v.end(),cmp())unique(v.first(),v.end(),cmp()) 第三个参数可以传入一个bool型,用来判断是不是相等,返回unique后的超尾 ...

  2. Hmz 的女装(递推)

    Hmz 的女装 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...

  3. Visual Studio 的Build Event 使用

    rmdir Configuration mkdir Configuration Copy "$(ProjectDir)Configuration\Spec.config" &quo ...

  4. EasyUI设置Layout自适应浏览器宽度和高度

    //设置自适应浏览器宽度和高度 function setLayoutHeight() { var height = $(window).height() - 20; $("#main_lay ...

  5. Linux下下载百度网盘资料

    因为百度网盘没有Linux下的客户端,所以无法直接下载网盘里的资料了.各路大神各显神通,提出了各种解决方法,这里只介绍两种. 1.BaiduPCS Github上有人通过Go语言写了一个Baidu网盘 ...

  6. autolayout UIImageView 根据 UILabel的宽度变换位置

    仅个人学习笔记,大牛勿喷 代码写法 使用Masonry //昵称 _nameLableView = [[UILabel alloc]init]; [_nameLableView setTextColo ...

  7. Python标准库 re

    正则表达式 regular expression 用来匹配一系列符合句法规则的字符串,是一门独立的小型的语言,如果你了解类Unix系统,那么你对正则表达式就一定不陌生.正则表达式的概念最初是由Unix ...

  8. normal曲线绘制

      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...

  9. 7.2 Collection和Iterator接口

  10. Appium + Python自动化 - 元素定位uiautomatorviewer

    元素定位主要介绍如何使用uiautiomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.uiautiomatorviewer是android-sdk自带的一个元素定位工具,非常 ...