首页 > 其他分享 >1~n约数个数的和

1~n约数个数的和

时间:2023-06-05 21:33:22浏览次数:35  
标签:约数 int sum 个数 long 中是

题目链接(https://ac.nowcoder.com/acm/problem/14682)

题意简述

给个n,求1到n的所有数的约数个数的和~(n<100000000)

分析

说明
样例解释:
1有1个约数1
2有2个约数1,2
3有2个约数1,3

讲解:
正常想法是用一个双重循环对每个数的约数查找,发现是约束则加1,但这样简单的想法会The Time Limited,所以这要使用数论中的知识了。
可以这样理解:
1~n的约数中都有1,即是1的倍数的数都有约数1;(约数1出现n次)

1~n中是2的倍数的数都有约数2;(约数2出现n/2次)

1~n中是3的倍数的数都有约数3;(约数3出现n/3次)
...
1~n中是n的倍数的数都有约数n;(约数n出现1次)
所以1~n的所有数的约数个数的和为sum(约数)=sum(1)+sum(2)+sum(3)+...+sum(n)=n+n/2+n/3+...+1

AC代码

点击查看代码
#include<bits/stdc++.h>
#define endl '\n'
typedef long long ll;
typedef double long lf;
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    int n;
    ll sum=0;
    cin >> n;
    
    for(int i=1; i<=n; i++)
    {
        sum+=n/i;
    }
    cout << sum << endl;
    return 0;
}

标签:约数,int,sum,个数,long,中是
From: https://www.cnblogs.com/200312202218s/p/17458981.html

相关文章

  • 获取字符串个数和长度
    SAP中strlen()只能计算字符串的个数,不能计算含有中文字符串的长度。FIELD-SYMBOLS:<FV>TYPESTRING.DATA:LV_SRTTYPEI.DATA:LVTYPEREFTODATA.DATA:LV_SSSSTYPECHAR255.LV_SSSS='我'.START-OF-SELECTION.CREATEDATALVTYPESTRING.ASSIGNLV->*TO<FV&g......
  • linux目录最大支持文件个数
    转、:linux目录最大支持文件个数 文件系统格式centos7缺省是xfs,centos6缺省是ext4,centos5缺省是ext3ext3文件数最大支持31998个,文件系统容量最大16TB,单个文件最大2TBext4文件数最大无限制,文件系统容量最大1EB(1EB=1024PB,1PB=1024TB)),单个文件最大16TB具体还和系统inode(索引节......
  • app直播源代码,如何自动控制输出空格的个数
    app直播源代码,如何自动控制输出空格的个数#include<stdio.h>intmain(){inti;charstr[5]={'*','*','*','*','*'};for(i=0;i<6;i++){printf("%*s",i,"");//*是占位符由i代替指定域宽,和%2d类似。puts(str);}return0;}​以上就......
  • 对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一
    /*对一个二维数组中的数据排序,方法如下:将整个数组中值最小的元素所在行调整为数组第一行,将除第一行外的行中最小元素所在行调整为第2行,将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推*/   #include<stdio.h>#include<stdlib.h>#include<time.h>#defineN......
  • 剑指 Offer 57. 和为s的两个数字
    剑指Offer57.和为s的两个数字题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例1:输入:nums=[2,7,11,15],target=9输出:[2,7]或者[7,2]示例2:输入:nums=[10,26,30,31,47,60],targe......
  • SQLserver 与mysql中的varchar()类型关于存储汉字的个数;字符与字节的区别
    https://blog.csdn.net/qq_64314976/article/details/128604141https://www.cnblogs.com/chenmingjun/p/8118083.html今天遇到一个问题,mysql中的汉字,插入到sqlserver中报错,两边字段大小都是varchar(18)。汉字个数超过了9个,所以在SQLserver中报错我可以理解,因为1个汉字占用2个......
  • 分享几个数据库备份脚本
    备份脚本六个注意点在写脚本前我这里按照个人习惯大概总结了以下六点首先要注意的一点就是shell环境是bash还是sh,需要在你的脚本开头中注明。#!/bin/bash其次就是数据库环境变量需要申明,例如直接加载 .bash_profile或者单独申明ORACLE_HOME、ORACLE_BASE等。source/h......
  • HDU2227(非降子序列的个数)
    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2227题意:给定一个长度为n(n<=100000)的整数序列,求其中的非降子序列的个数。分析:如果n的值比较小,那么就是一个纯粹的dp题。设dp[i]表示以a[i]为结尾非降子序列的个数,其状态转移方程为:      可以看出,这样做的时间复杂度是......
  • 容斥原理应用(求1~r中有多少个数与n互素)
    问题:求1~r中有多少个数与n互素。对于这个问题由容斥原理,我们有3种写法,其实效率差不多。分别是:dfs,队列数组,位运算。先说说位运算吧:用二进制1,0来表示第几个素因子是否被用到,如m=3,三个因子是2,3,5,则i=3时二进制是011,表示第2、3个因子被用到LLSolve(LLn,LLr){vector<LL>p;......
  • Python判断一个数据结构是否为空的方法
    《EffectivePython》,里面提到判断字符串或者集合是否为空的原则。意思是:不要通过取字符串或者集合的长度来判断是否为空,而是要用not关键字来判断,因为当字符串或集合为空时,其值被隐式地赋为False.test_str=''test_tuple=()test_list=[]test_dict={}test_set=set()ifnot(test......