【nowcoder 218396】小G的sum

小G的sum

题目链接:nowcoder 218396

到牛客看:

——>点我跳转<——

题目大意

求 1~n 中每个数最小的约数和最大的约数的和。

思路

大家都知道,一个数最小的约数是 1 1 1,最大的约数是它自己。

那就是等于 ∑ i = 1 n ( 1 + i ) \sum\limits_{i=1}^{n}(1+i) i=1n(1+i),然后化简一下:
n + ( 1 + n ) × n / 2 = 2 × n / 2 + ( 1 + n ) × n / 2 = ( 3 + n ) × n / 2 n+(1+n)\times n/2=2\times n/2+(1+n)\times n/2=(3+n)\times n/2 n+(1+n)×n/2=2×n/2+(1+n)×n/2=(3+n)×n/2

然后就可以 O ( 1 ) O(1) O(1) 求了。

代码

#include<cstdio>

using namespace std;

int n;

int main() {
    
    
	scanf("%d", &n);
	
	printf("%lld", 1ll * n * (n + 3) >> 1ll);
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43346722/article/details/114551682