第一部分

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. css里关于浏览器的前缀

    今天遇到一个比较坑爹的 -moz-box-sizing: border-box; box-sizing' border-box;   一下子有点懵逼,第一个什么鬼??一查,原来是火狐浏览器的前缀.应该 ...

  2. (水题)洛谷 - P1014 - Cantor表

    https://www.luogu.org/problemnew/show/P1014 很显然同一对角线的和是相等的.我们求出前缀和然后二分. 最后注意奇偶的顺序是相反的. #include<b ...

  3. python 字典 dict items values keys

    dict.items() 1 >>> d = dict(one=1,two=2) 2 >>> it1 = d.items() 3 >>> it1 ...

  4. Jury Meeting CodeForces - 854D

    Jury Meeting CodeForces - 854D 思路:暴力枚举会议开始的那一天(只需用所有向0点飞的航班的那一天+1去枚举即可),并计算所有人此情况下去0点和从0点出来的最小花费. 具体 ...

  5. DataGridView 绑定List<>数据的更新

    使用BindingSource做为中间数据源,使用 bindingSource1.DataSource = productOrderList;dataGridView1.DataSource = bi ...

  6. Excel数据直接到DataTable--->DB

    1) Excel数据直接导入到临时生成的DataTable using (OleDbConnection selectConnection = new OleDbConnection("Pr ...

  7. 分享几个自己喜欢的前端UI框架

    http://www.layui.com/ http://element-cn.eleme.io/#/zh-CN/component/installation

  8. asp.net 线程批量导入数据,ajax获取执行状态

    最近做了一个批量导入功能,长时间运行,没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过a ...

  9. Dev GridView 属性说明

    说明  Options  OptionsBehavior 视图的行为选项 AllowIncrementalSearch 允许用户通过输入想得到的列值来定位行 AllowPartialRedrawOnS ...

  10. 1. UI Tests简介

    (1) User Interface Testing UI Testing库主要提供了与App中的UI元素进行查找和交互的能力,这使得我们可以通过验证UI元素的状态来测试App是否正常运行.     ...