牛客练习赛25A——因数个数和

链接:https://www.nowcoder.com/acm/contest/158/A
来源:牛客网
题目描述
q次询问,每次给一个x,问1到x的因数个数的和。
输入描述:
第一行一个正整数q ;
接下来q行,每行一个正整数 x
输出描述:
共q行,每行一个正整数表示答案
示例1
输入
复制
4
1
2
3
10
输出
复制
1
3
5
27
说明
1的因数有1
2的因数有1,2
3的因数有1,3
以此类推
备注:
1<=q<=10 ,1<= x<=109

又爆零了 垃圾题目
把求因数个数转换成求倍数个数 比如1到9这个区间里,1作为因数的就出现了9/1 9次 2作为因数就出现了9/2 4次 这样最后其实就是求出y=n/x 这个函数从1到n的离散值,好多博客都讲得不清楚这个对称,乱抄一通,这里求1到sqrt(n)之后能直接乘2的原因是 虽然1-sqrt(n) 和sqrt(n)到n这两个区间的函数值不同,但是比如2在1-sqrt(n)这里区间里,通过n/2得到的这个函数值其实刚好是sqrt(n)到n这个区间里的自变量 也就是两个区间的x和y是相反的
而不是一句什么狗屁对称就带过
然后减去sqrt(n)*sqrt(n)是因为里面有一些比如9/3=3 这其实只能算一个 但是*2之后就算了两次,然后我还是不懂他妈的为什么要sqrt(n)*sqrt(n) 真是垃圾题目

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100];
int main(){
    ll n;
    int t;
    scanf("%d",&t);
    while(t--){
        scanf("%lld",&n);
        long long x = sqrt(n);
        long long ans = 0;
        for(long long i = 1;i <= x; ++i){
            ans += n / i;
        }
        ans = 2*ans - x*x;
        printf("%lld\n",ans);
    }
}
全部评论

相关推荐

03-27 16:40
已编辑
门头沟学院 C++
26学院本太难了,很多公司机筛就给我刷了。机会都难拿到如果是简历存在问题也欢迎拷打————————————————————分割线——————————————————————2026.3.4更新:发完贴之后,时不时投递又收到了不少的笔试/面试邀请。主要是之前投递简历出去之后基本上都是沉默状态,年后好转了不少timeline:2026.01.21&nbsp;文远知行笔试,半年多没刷算法题&nbsp;-&gt;挂&nbsp;(后续HR说春招可以重新安排笔试)2026.2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小鹏汇天&nbsp;技术一面,第二周收到结果&nbsp;-&gt;挂2026.2.12&nbsp;&nbsp;&nbsp;大众Cariad代招&nbsp;技术二面&nbsp;-&gt;Offer2026.2.28&nbsp;&nbsp;&nbsp;多益网络技术面试,由于风评太差,一直在犹豫要不要接面试&nbsp;-&gt;推迟-----------分割线-----------2026.3&nbsp;月前的某一天,临时去电网报名了二批计算机岗位的笔试2026.3.6&nbsp;从上家公司实习离职,氛围最好的一家公司,leader&nbsp;说可以帮忙转正,但是流程太长,而且我们部门据说只有一个&nbsp;hc,更想要研究生,我很有可能是会被签外包公司在这里干活,就离职了。2026.3.9&nbsp;入职新公司,大众Cariad&nbsp;以外部公司的身份进组,项目组签了三年,后续三年应该都可以在这里呆,不知道有没有希望原地跳槽。2026.3.10&nbsp;电网考试居然说我通过资格审查了,短信约我去参加资格审查,请假一天,买了&nbsp;12&nbsp;号晚上的机票回成都2026.3.15&nbsp;参加国家电网计算机类笔试2026.3.17&nbsp;电网出成绩了,感觉很低。觉得已经🈚️了2026.3.18&nbsp;收到电网面试通知,通知&nbsp;3.22-3.25&nbsp;这个时间去面试,我的岗位只招&nbsp;1&nbsp;个人。据说面试只有&nbsp;2-3&nbsp;人,不知道能不能成功----------分割线-----------2026.3.21&nbsp;电网面试结束,感觉回答的还勉勉强强,大概是2个岗位分别招1个人,一共11人面试,实际来了9人2026.3.27&nbsp;出面试成绩,满分100分,早上10:20左右发现面试成绩46,我震惊了,没截图,后面过了十分钟重新看发现面试成绩给我改成58了。但同样震惊。朋友问我是不是把面试官打了,哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务