2 条题解

  • 1
    @ 2021-8-7 21:30:14

    C++ :

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    typedef long long ll;
    
    int main()
    {
        ll n,m,ans1,ans2,len,now,L,R,t;
        while(~scanf("%lld %lld",&n,&m))
        {
            ans1 = ans2 = 0;
            t = 1;
            /*for(int i = 1; i <= n; i++)
                ans1 += m % i;*/
            if(n >= m)
                ans2 = (n - m) * m,n = m;
            /*for(int i = 1; i <= m; i++)
                cout<<i<<":"<<m % i<<endl;*/
            L = 0;
            now = m;
            while(true)
            {
                t++;
                R = m / t + 1;
                if(R > now) break;
                if(R > n)
                {
                    now = m / t;
                    L = m % now;
                    continue;
                }
                len = now - R + 1;
                R = L + (len - 1) * (t - 1);
                if(now > n)
                {
                    L = m % n;
                    len = n - m / t;
                }
                ans2 += (R + L) * len / 2;
                now = m / t;
                if(!now) break;
                L = m % now;
            }
            for(int i = min(now,n); i >= 2; i--) //提前跳出来的数有可能大于n;
                ans2 += m % i;
            cout<<ans2<<endl;
        }
    }
    
    • 0
      @ 2025-4-7 9:32:44

      #include using namespace std; int main() { int n,k,a=0; cin>>n>>k; for(int i=1;i<=k;i++) { a+=n%i; } cout<<a;

      • 1

      信息

      ID
      110
      时间
      1000ms
      内存
      128MiB
      难度
      3
      标签
      递交数
      53
      已通过
      29
      上传者