P1403题目链接
这是一个数论题,这种数学题你要是盲目开暴力可能会很菜或者想不出思路,这里讲讲比较666的思路。
O ( n ) O(n) O(n)复杂度解法
可以用纯数学证明一种时间复杂度为 O ( n ) O(\sqrt{n}) O(n )的算法:
∑ i = 1 n σ ( i ) = ∑ i = 1 n ∑ d ∣ i 1 = ∑ i = 1 n ∑ d = 1 n [ d ∣ i ] = ∑ d = 1 n ∑ i = 1 n [ d ∣ i ] = ∑ d = 1 n ⌊ d i ⌋ \sum\limits_{i=1}^{n}\sigma(i) = \sum\limits_{i=1}^{n}\sum\limits_{d|i}1 = \sum\limits_{i=1}^{n}\sum\limits_{d=1}^{n}{[d|i]} = \sum\limits_{d=1}^{n}\sum\limits_{i=1}^{n}{[d|i]} = \sum\limits_{d=1}^{n}{\lfloor{\frac{d}{i}}\rfloor} i=1∑nσ(i)=i=1∑nd∣i∑1=i=1∑nd=1∑n[d∣i]=d=1∑ni=1∑n[d∣i]=d=1∑n⌊id⌋
而对于该算法具体实现的解读可以推荐看这篇 d a l a o dalao dalao的文章
我可以给大家看一下我是怎么编辑公式的,这个对大家也很有用的:
向上取整: ⌊ x ⌋ \lfloor x \rfloor ⌊x⌋
$\lfloor x \rfloor$
向下取整: ⌈ x ⌉ \lceil x \rceil ⌈x⌉
$\lceil x \rceil$
分数: x y \frac{x}{y} yx
$\frac{x}{y}$
积分号: ∑ i = 1 n σ ( i ) \sum\limits_{i=1}^{n}\sigma(i) i=1∑nσ(i)
$\sum\limits_{i=1}^{n}\sigma(i)$
注意,想要上下限不在右侧而是上下侧,需要加上\limits
W a n t Want Want T o To To K n o w Know Know M o r e More More ? ? ? L o o k Look Look A t At At H e r e Here Here ! ! !
实在看不懂?没关系(除非你是搞竞赛的),你看得懂代码就行了!
AC代码(Java语言描述)import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
scanner.close();
int result = 0;
for(int i = 1, j; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?