zoukankan      html  css  js  c++  java
  • 洛谷P1403 约数研究【思维】

    题目https://www.luogu.org/problemnew/show/P1403

    题意:

    定义$f(n)$为n的因子个数。给定一个数n,求$f(1)$到$f(n)$之和。

    思路:

    最直接的想法就是我们求出每一个f的值,然后求和。

    但是如果我们转换一个思路,把f的值打散来求,就很简单了。

    f求的是一个数因子的个数,但是也可以看成是某一个数是多少个数的倍数。

    1到n的f之和就可以看成是,2的倍数的个数+3的倍数的个数+.......+n的倍数的个数。

    也就是说我们去考虑每一个因子对这个和的贡献。

    而i的倍数的个数就是$frac{n}{i}$

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<map>
     4 #include<set>
     5 #include<iostream>
     6 #include<cstring>
     7 #include<algorithm>
     8 #include<vector>
     9 #include<cmath> 
    10 #include<queue>
    11 
    12 #define inf 0x7f7f7f7f
    13 using namespace std;
    14 typedef long long LL;
    15 typedef pair<int, int> pr;
    16 
    17 LL n;
    18 
    19 int main()
    20 {
    21     scanf("%lld", &n);
    22     LL ans = 0;
    23     for(LL i = 1; i <= n; i++)ans += n / i;
    24     printf("%lld
    ", ans);
    25     
    26     return 0;
    27 }
  • 相关阅读:
    TensorFlow学习笔记--CIFAR-10 图像识别
    第二章--第二节:注释
    webbrowser
    RichViewEdit
    RichEdit
    TreeView
    RichView
    ListView
    DesktopLoader服务程序
    Delphi实现程序只运行一次并激活已打开的程序
  • 原文地址:https://www.cnblogs.com/wyboooo/p/10375010.html
Copyright © 2011-2022 走看看