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 |
|
|
| 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 |