首页 > 其他分享 >洛谷 P1403 约数研究

洛谷 P1403 约数研究

时间:2022-11-20 22:55:46浏览次数:67  
标签:约数 right 洛谷 P1403 sum rfloor

洛谷 P1403 约数研究

P1403 约数研究 - 洛谷

前置知识

  1. \(a\) 能整除 \(b\) 用符号表示为 \(b\mid a\)

  2. \(1\sim n\) 中约数(即因子)含 \(x\) 的个数 为 \(\left\lfloor\dfrac{n}{x}\right\rfloor\)

证明

对于 \(x\) 作为因子,\(x\) 一定为 \(2x,3x,4x,...,kx\) 的因子,则 \(k=\left\lfloor\dfrac{n}{x}\right\rfloor\)

所以 \(answer=k-1+1=k=\left\lfloor\dfrac{n}{x}\right\rfloor\)

解决该题

假设求\(f(6)\)

1 的约数:1
2 的约数:1,2
3 的约数:1, ,3
4 的约数:1,2, ,4
5 的约数:1, , , ,5
6 的约数:1,2,3, , ,6

正常思路:求每个数的约数个数,再求和

换种思路:求 \(1\sim n\) 中有多少个数约数含 \(i\) ,其中\(i\in [1,n]\)

证明:

\[由题得,要求的值为\sum_{i=1}^{n}f(i)=\sum_{i=1}^{n}\sum_{d\mid i}1 \]

\[即\sum_{i=1}^{n}f(i)=\sum_{i=1}^{n}\sum_{d=1}^{n}{(d\mid i)} \]

\[交换求和顺序\sum_{i=1}^{n}f(i)=\sum_{d=1}^{n}\sum_{i=1}^{n}{(d\mid i)} \]

\[由前置知识2得 \sum_{i=1}^{n}f(i)=\sum_{d=1}^{n}\left\lfloor\dfrac{n}{d}\right\rfloor \]

Code

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int ans = 0;
        for (int i = 1; i <= n; ++i) {
            ans += n / i;
        }
        System.out.println(ans);
    }
}

标签:约数,right,洛谷,P1403,sum,rfloor
From: https://www.cnblogs.com/Cattle-Horse/p/16909962.html

相关文章

  • 洛谷-1347
    洛谷-1347思路此题解的思路再加上这篇blog的代码实现。注意:本体要求的不是一个拓扑排序就可以了,实际上是要求一条链的拓扑排序。Code#include<bits/stdc++.h>using......
  • 洛谷P1270 “访问”美术馆 树形dp
    题意https://www.luogu.com.cn/problem/P1270分析经典的树上背包,令\(dp[x][t]\)表示在\(x\)点剩余\(t\)秒的最多画数在\(x\)结点考虑分给左右结点的时间,故枚举分给左儿......
  • 利用递归求两个数的最大公约数
    #include<stdio.h>inthcf(intn1,intn2);intmain(){intn1,n2;printf("输入两个正整数:");scanf("%d%d",&n1,&n2);printf("%d和%d的最大公约数......
  • 洛谷:P1789 【Mc生存】插火把
        代码:#include<stdio.h>structhuobaye{intx;inty;};structstoneye{intx;inty;};intabs(intn){intflag;if(......
  • 洛谷P3917 异或序列
     题意:给出一个大小为n的序列a[n],求∑1≤i≤j≤n Ai​⨁Ai+1​⨁⋯⨁Aj的值​分析:根据异或的性质我们很容易想到一个O(n*n)的做法,即进行一个异或前缀和。......
  • 最大公约数
    最大公约数欧几里得算法对于两个数\(a,b\),设\(a>b\),当\(a\%b==0\)时,答案为\(b\)。否则,设\(a=b*q+r,r<b\),则\(gcd(a,b)=gcd(b,a\%b)\),时间复杂度\(O(\logN)\)......
  • 【洛谷 P4525】 【模板】自适应辛普森法 1
    自适应辛普森法,用于求定积分。原理是不断二分区间直到区间的积分和二次函数的积分拟合程度足够高,然后用二次函数的积分值来代替原积分值。#include<bits/stdc++.h>#def......
  • 洛谷P1706 全排列问题
    全排列问题题目描述P1706全排列问题-洛谷按照字典序输出自然数\(1\)到\(n\)所有不重复的排列,即\(n\)的全排列,要求所产生的任一数字序列中不允许出现重复的数字......
  • 【洛谷P3810】 【模板】三维偏序(陌上花开)
    CDQ是一中思想,用来求点对数列。定义\(solve(l,r)\)用来求\([l,r]\)区间的数对,那么先递归处理\(solve(l,mid)\),然后考虑前半段对后半段的影响,然后再递归处理后半段\(sol......
  • 洛谷-3758
    洛谷-3758思路一定要看数据范围!Code#include<bits/stdc++.h>usingnamespacestd;#define_u_u_ios::sync_with_stdio(false),cin.tie(nullptr)#definecfint_......