第一部分

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. thrift配置——windows客户端与linux服务端通信(C++)

    windows客户端: 1.首先要安装boost库 下载源文件 2.安装boost之前先要安装python-3.4.0.amd64,很多地方没有说,弄了很久 3.运行bootstrap.bat 生成b ...

  2. python __builtins__ tuple类 (68)

    68.'tuple', 转换为元组类型 class tuple(object) | tuple() -> empty tuple | tuple(iterable) -> tuple in ...

  3. hdu 3038 How Many Answers Are Wrong【带权并查集】

    带权并查集,设f[x]为x的父亲,s[x]为sum[x]-sum[fx],路径压缩的时候记得改s #include<iostream> #include<cstdio> usi ...

  4. C语言归并排序(合并排序)算法及代码

    归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并.仅从算法思想上了解归并排序会觉得很抽象,接下来就以对序列A[0], A[l]…, A ...

  5. 人品问题 树形dp

    题目 网上出现了一种高科技产品——人品测试器.只要你把你的真实姓名输入进去,系统将自动输出你的人品指数.把儿不相信自己的人品为0.经过了许多研究后,把儿得出了一个更为科学的人品计算方法.这种方法的理论 ...

  6. Oracle JDK各版本下载地址记录

    Oracle JDK各版本下载地址: https://www.oracle.com/technetwork/java/javase/archive-139210.html

  7. bootstrap div 固定

    div固定在顶部样式: .navbar-fixed-top div固定在底部样式 .navbar-fixed-bottom

  8. [转]ASP.NET MVC Bootstrap极速开发框架

    本文转自:http://www.cnblogs.com/smartbooks/p/3814927.html 前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET ...

  9. ref 和 React.js 中的 DOM 操作

    在 React.js 当中你基本不需要和 DOM 直接打交道.React.js 提供了一系列的 on*方法帮助我们进行事件监听,所以 React.js 当中不需要直接调用 addEventListen ...

  10. C#中的委托(转)

    C# 中的委托和事件 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真 ...