1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 2939  Solved: 2169 [Submit][Status][Discuss] Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 题解 我们知道一个数x的约数个数…
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2032  Solved: 1537[Submit][Status][Discuss] Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 HINT   Source Day2…
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1968 Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和 Sample Input 3 Sample Output 5 HINT 题意 题解:…
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 2351  Solved: 1797 [Submit][Status][Discuss] Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input     3 Sample Output     5 HINT   S…
http://www.lydsy.com/JudgeOnline/problem.php?id=1968 换个角度 一个数可以成为几个数的约数 #include<cstdio> #include<iostream> using namespace std; int main() { int n; ; scanf("%d",&n); ;i<=n;++i) ans+=n/i; cout<<ans; } 1968: [Ahoi2005]COM…
欧拉线性筛. 对于它的复杂度的计算大概思考了很久. procedure build_prime; var i,j:longint; begin fillchar(vis,sizeof(vis),true); prime[]:=; to maxn do begin if vis[i] then begin inc(prime[]); prime[prime[]]:=i; end; to prime[] do begin if i*prime[j]>maxn then break; vis[i*pr…
欧拉函数: 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. POJ 2407.Relatives-欧拉函数 代码O(sqrt(n)): ll euler(ll n){ ll ans=n; ;i*i<=n;i++){ //这里i*i只是为了减少运算次数,直接i<=n也没错, ){ //因为只有素因子才会加入公式运算.仔细想一下可以明白i*i的用意. ans=ans/i*(i-); ) n/=i; //去掉倍数 } } ) ans=ans/n*(n-); return ans; }…
#include<cstdio> #include<iostream> #define M 1000008 using namespace std; long long tot,f[M],sum[M],ans,n,b[M],p[M]; int main() { scanf("%d",&n); ans=; ;i<=n;i++) { if(!b[i]) { tot++; p[tot]=i; sum[i]=; f[i]=; } ;j<=tot;j+…
按照积性函数的定义筛一下这个积性函数即可. #include <cstdio> #include <algorithm> #define N 1000004 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int tot; int f[N],prime[N],vis[N],sum[N]; int main() { //setIO("input"…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1968 题意概括 求 ΣF(i)   (1<=i<=n)N<=1000000 F(i)是i的约数个数 题解 换一个角度思考,可以把原问题转化为: 对于每一i,在1~n中有多少个倍数,所有的个数和就是答案. 那么,ΣF(i) = ∑ floor(n/i) 代码 #include <bits/stdc++.h> int n,ans=0; int main(){ scanf(&quo…
对于i属于[1,n],i只能成为[1,n]中n/i个数的约数,易证. #include<stdio.h> int n,i; long long ans; int main() { scanf("%d",&n); ;i<=n;i++)ans+=(long long)n/i; printf(; }…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1968 题意: 设f(x) = x约数的个数.如:12的约数有1,2,3,4,6,12,所以f(12) = 6. 给定n,问你f(1)到f(n)之和. 题解: 好多做法... (1)O(N*sqrt(N)) 纯暴力(应该过不了). 枚举i,sqrt(i)复杂度求出约数个数,更新ans. 不附代码. (2)O(N*log(N)) 若当前枚举到i,则i为i*k的一个约数(k >= 0),dp[…
枚举约数,加上有这个约数的数个数 #include<iostream> #include<cstdio> using namespace std; const int N=1000005; int n; long long ans; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) ans+=n/i; printf("%lld\n",ans); return 0; }…
题意:记$f(n)$为$n$的约数个数,求$\sum_{i=1}^n f(i)$,$n \leq 10^6$. 我也不知道为什么我要来做这个- 直接枚举每个数会是哪些数的约数-复杂度$O(n log n)$ #include<cstdio> typedef long long lint; int n;lint ans; int main() { scanf("%d",&n); for(register int i=1;i<=n;i++) for(registe…
Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 HINT Source Day2   正解:数学 解题报告: 讨论每个因子的贡献就可以了.   //It is made by jump~ #include <iostream> #include <cstdlib> #include <cs…
计算每一个数的贡献就好了..O(N) n/i只有2*sqrtn个取值于是可以优化到O(sqrtn) #include<bits/stdc++.h> #define ll long long using namespace std; ,inf=1e9; int n,ans,l,r; void read(int &k) { ;k=;char c=getchar(); ),c=getchar(); +c-',c=getchar(); k*=f; } int main() { read(n);…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1968 直接计算每个因子的贡献就可以了. $Ans=\sum_{i=1}^n[\frac{n}{i}]$ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; int main(){ int N; scanf("%…
大水题,一分钟就做完了...直接枚举1~n就行了,然后在n中判断出现多少次. 题干: Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 HINT Source 代码: #include<iostream> #include<cstdio> #include<cmath> #includ…
数论 原谅我这么傻逼的题都不会做…… 或许写成数学公式的形式比较容易想到解法? $$ans=\sum_{i=1}^n \sum_{d|i} 1$$ ……是不是感觉很水呀……是吧……改成先枚举d再枚举 i 看看…… $$ans=\sum_{d=1}^n \sum_{d|i} 1=\sum_{d=1}^n \lfloor\frac{n}{d}\rfloor$$ 果然我是个傻逼…… /***********************************************************…
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1513 Solved: 1154 [Submit][Status][Discuss] Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 HINT Source Day2 奇…
Description The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. — It is a matter of security to change such things every now…
发现luogu的UI改版后AC以后不能给题目评定难度了…… P1403 [AHOI2005]约数研究 类似素数筛的一道题,不过是约数. 先顺手写了个暴力做法,TLE定了~ #include<bits/stdc++.h> using namespace std; ]; int main() { scanf("%d",&n); ; i<=n; i++) { ; j<=i; j++) )sum[i]++; sum[i]+=sum[i-]; } printf(&…
题目链接 题意 : 定义不能被平方数整除的数为 Square-free Number 定义 F(i) = 有几对不同的 a 和 b 使得 i = a * b 且 a .b 都是 Square-free 给出一个 N 求 分析 : 首先 Square-free 有一个性质 就是用唯一分解定理将 Square-free Number 分解后 素因数的指数都是 1 那么对于 a.b 是 Square-free Number 相乘 a * b 得出的 i 其不会有素因子的指数超过 2 然后你要熟悉欧拉筛…
小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为"美素数",如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数.  给定一个区间,你能计算出这个区间内有多少个美素数吗? Input 第一行输入一个正整数T,表示总共有T组数据(T <= 10000).  接下来共T行,每行输入两个整数L,R(1<= L <= R <= 100…
HDU - 2824 题意: 求[a,b]间的欧拉函数和.这道题卡内存,只能开一个数组. 思路: ϕ(n) = n * (p-1)/p * ... 可利用线性筛法求出所有ϕ(n) . #include <algorithm> #include <iterator> #include <iostream> #include <cstring> #include <iomanip> #include <cstdlib> #include…
Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 HINT   Source Day2 思路:枚举约数即可. #include <iostream> #include <cstdio> using namespace std; int main() { ; scanf("%d"…
(有种失踪人口回归的感觉) 约束研究[传送门] (不过好像没有人注意到我这个蒟蒻) 好的不管它啦 最近学数论比较多,所以可能会有好多好多的数论题???(不存在的) 行吧上算法标签: 数论   数论   数论 首先显然它求的是Σψ(i)i∈(1,n)下面补充关于ψ(i)的百度百科知识(或许有些奇怪……): 行吧那个长得像裤子的东西是求积(和西格玛差不多吧??) 接下来讲一下原理: 我们可以反过来考虑,显然如果分别求1-n中每个数的正约数个数,我们会炸掉的(tle喽),所以我们就反向思维,对于每个数…
Input只有一行一个整数 N(0 < N < 1000000).Output只有一行输出,为整数M,即f(1)到f(N)的累加和.Sample Input 3 Sample Output 5 Hint 枚举每个因数出现的次数,相加就可以了. #include<cstdio> int n,ans; int main() { scanf("%d",&n); ;i<=n;i++) ans+=n/i; printf("%d",ans)…
Description Input 只有一行一个整数 N(0 < N < 1000000). Output 只有一行输出,为整数M,即f(1)到f(N)的累加和. Sample Input 3 Sample Output 5 题解 水题一道...做不出的要$AFO$了... //It is made by Awson on 2017.11.10 #include <map> #include <set> #include <cmath> #include &…
题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这么简单我都不会... 简单说下自己的理解. 从原题出发容易得到的朴素算法容易超时,所以要想到转化问题.原题要求1~n的因数之和,反过来说,就是求1~n中有几个数分别是1.2.….n的倍数.这个弯子转过来,题目就容易写了.直接变成O(n)算法. 有趣的是,如果数据规模变为$10^{12}$,这道题该如…