Submission #37863204


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,n) for (ll i=a;i<(ll)n;i++)
ll read(){ll r;scanf("%lld",&r);return r;}

// \sum_{x=0}^n \lfoor \frac{ax+b}{c} \rfloor
ll floor_sum(ll a,ll b,ll c,ll n){
  if(a==0) return (b/c)*(n+1);
  if(a >= c or b >= c) return n*(n+1)/2*(a/c) + (n+1)*(b/c) + floor_sum(a%c,b%c,c,n);
  ll m = (a*n+b)/c;
  return m*n - floor_sum(c,c-b-1,a,m-1);
}

int main(){
  int t=read();
  while(t--){
    int n=read();
    int m=read();
    int r=read();
    ll ans=0;
    rep(p,0,30){ // 2^30 > 10^9
      // = sum((value+2^p)/(2^{p+1}) - (value)/(2^{p+1}))
      ans += floor_sum(m,r+(1<<p),1<<(p+1),(n-r)/m);
      ans -= floor_sum(m,r       ,1<<(p+1),(n-r)/m);
    }
    printf("%lld\n",ans);
  }
  return 0;
}

Submission Info

Submission Time
Task Ex - Popcount Sum
User cromarmot
Language C++ (GCC 9.2.1)
Score 600
Code Size 775 Byte
Status AC
Exec Time 1640 ms
Memory 3720 KiB

Compile Error

./Main.cpp: In function ‘ll read()’:
./Main.cpp:5:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
    5 | ll read(){ll r;scanf("%lld",&r);return r;}
      |                ~~~~~^~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 1
AC × 30
Set Name Test Cases
Sample example0.txt
All example0.txt, random0.txt, random1.txt, random10.txt, random11.txt, random12.txt, random13.txt, random14.txt, random15.txt, random16.txt, random17.txt, random18.txt, random19.txt, random2.txt, random20.txt, random21.txt, random22.txt, random23.txt, random24.txt, random25.txt, random26.txt, random27.txt, random3.txt, random4.txt, random5.txt, random6.txt, random7.txt, random8.txt, random9.txt, small0.txt
Case Name Status Exec Time Memory
example0.txt AC 7 ms 3532 KiB
random0.txt AC 352 ms 3512 KiB
random1.txt AC 986 ms 3688 KiB
random10.txt AC 1294 ms 3584 KiB
random11.txt AC 1287 ms 3580 KiB
random12.txt AC 1344 ms 3656 KiB
random13.txt AC 1333 ms 3652 KiB
random14.txt AC 1390 ms 3648 KiB
random15.txt AC 1382 ms 3516 KiB
random16.txt AC 1428 ms 3568 KiB
random17.txt AC 1422 ms 3652 KiB
random18.txt AC 1467 ms 3684 KiB
random19.txt AC 1457 ms 3584 KiB
random2.txt AC 1079 ms 3584 KiB
random20.txt AC 1505 ms 3656 KiB
random21.txt AC 1512 ms 3572 KiB
random22.txt AC 1640 ms 3584 KiB
random23.txt AC 1150 ms 3684 KiB
random24.txt AC 1152 ms 3512 KiB
random25.txt AC 1154 ms 3512 KiB
random26.txt AC 1153 ms 3584 KiB
random27.txt AC 1153 ms 3652 KiB
random3.txt AC 1046 ms 3568 KiB
random4.txt AC 1132 ms 3508 KiB
random5.txt AC 1118 ms 3512 KiB
random6.txt AC 1194 ms 3656 KiB
random7.txt AC 1186 ms 3720 KiB
random8.txt AC 1245 ms 3568 KiB
random9.txt AC 1238 ms 3512 KiB
small0.txt AC 606 ms 3688 KiB