3 条题解

  • 1
    @ 2023-4-15 16:03:07
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    int n,k;
    long long ans;
    signed main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cin>>n>>k;
    	ans=n*k;
    	long long cnt=0;
    	for(int i=1;i*i<=k;i++)//在 i*i<k 时枚举 i 
    	{
    		cnt=k/i;
    		ans-=(k/i)*i;
    	}
    	signed d=k/n;
    	for(int i=max(1,d);i<cnt;i++)//在 i*i>k 时枚举 k/i 但不是从1开始,有时 n<k 从 n/k 开始 如 n=9 k=53(数据在下面); 
    	{
    		int maxa=k/i;
    		int mina=k/(i+1)+1;	
    		maxa=min(maxa,n);
    		int z=(maxa+mina)*(maxa-mina+1)/2;
    		ans-=z*i;
    	}
    	cout<<ans;
    	return 0;
    }
    /*
    n=9 k=53
    i k/i
    1 53 
    2 26
    3 17
    4 13
    5 10 
    6 8
    7 7
    8 6
    9 5
    */
    
    • @ 2023-4-15 16:52:55

      巨!!!!!!!!!写了一个小时卡住了,一看这个就会了,太巨了!!!!

  • 1
    @ 2023-4-14 17:24:00
    #include <bits/stdc++.h>
    #define int long long
    using namespace std;
    int n, k;
    int ans;
    signed main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n >> k;
        // sum(k - (k/i) * (i))
        ans = n * k;
        for (int i = 1, ii; i <= n && i <= k; i = ii + 1)
        {
            int kdi = k / i;
            ii = k / kdi;
            // k/i ~ k/ii == kdi
            // kdi i
            //   ...
            // kdi ii
            ii = min(ii, n);
            ans -= kdi * ((i + ii) * (ii - i + 1) / 2);
        }
        cout << ans << "\n";
        return 0;
    }
    
    • 0
      @ 2023-4-15 16:00:31
      #include<bits/stdc++.h>
      #define int long long
      using namespace std;
      int n,k;
      int x,y,z;
      int ans=0;
      signed main()
      {
      	cin>>n>>k;
      	x=1;
      	while(x<=n)
      	{
      		y=k/x;
      		if(y==0)
      			break;
      		z=k/y;
      		z=min(z,n);
      	//	cout<<x<<":"<<y<<":"<<z<<endl;
      		ans+=((y*(z+x)*(z-x+1))/2);
      	//	cout<<":"<<ans<<endl;
      		x=z+1;
      	}
      	ans=n*k-ans;
      	cout<<ans<<endl;
      	return 0;
      }
      
      • 1

      信息

      ID
      1260
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      100
      已通过
      15
      上传者