zoukankan      html  css  js  c++  java
  • 洛谷 P2424 约数和

    题目背景

    Smart最近沉迷于对约数的研究中。

    题目描述

    对于一个数X,函数f(X)表示X所有约数的和。例如:f(6)=1+2+3+6=12。对于一个X,Smart可以很快的算出f(X)。现在的问题是,给定两个正整数X,Y(X<Y),Smart希望尽快地算出f(X)+f(X+1)+……+f(Y)的值,你能帮助Smart算出这个值吗?

    输入输出格式

    输入格式:

     

    输入文件仅一行,两个正整数X和Y(X<Y),表示需要计算f(X)+f(X+1)+……+f(Y)。

     

    输出格式:

     

    输出只有一行,为f(X)+f(X+1)+……+f(Y)的值。

     

    输入输出样例

    输入样例#1:
    2 4
    输出样例#1:
    14
    输入样例#2:
    123 321
    输出样例#2:
    72543

    说明

    对于20%的数据有1≤X<Y≤105。

    对于60%的数据有1≤X<Y≤1*107。

    对于100%的数据有1≤X<Y≤2*109。
    思路:约数和+分块。

    #include<iostream>
    #include<cstdio>
    #define LL long long
    using namespace std;
    LL ans,x,y;
    LL slove(LL n){
        LL i=1,tot=0;
        while(i<=n){
            int j=n/(n/i);
            tot+=n/i*(i+j)*(j-i+1)/2;
            i=j+1;
        }
        return tot;
    }
    int main(){
        cin>>x>>y;
        cout<<slove(y)-slove(x-1);
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    c#中常用的一些异常类小结希望大家留言补充
    【转】ASP.NET学习步骤
    【转】Android是什么?
    【转】.NET各大网站编程技术网址
    毕业设计日志(一)面向对象编程基础
    实习日志(1)
    多边形
    颜色选择器
    java多线程小练习
    方块移动
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7574663.html
Copyright © 2011-2022 走看看