QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#315445 | #5477. Cake Decoration | Romy67 | AC ✓ | 6229ms | 3736kb | C++20 | 3.7kb | 2024-01-27 13:24:08 | 2024-01-27 13:24:09 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int P=998244353;
int X,A,B;
signed main()
{
cin>>X>>A>>B;
B--;
int ans=0;
for(int a=1;a*(a+1)*(a+2)*(a+3)<=X;a++)
for(int b=a+1;a*b*(b+1)*(b+2)<=X;b++)
{
int n=X/(a*b);
int lc=b+1,rc;
int L=0,R=sqrtl(n)+10;
while(R-L>1)
{
int mid=(L+R)>>1;
if(mid*(mid+1)<=n)
L=mid;
else
R=mid;
}
rc=L;
if(lc>rc)
continue;
if(a+b>=A&&a+b<=B)
ans=(ans+(rc-lc+1)*4)%P;
//L<=a+c<=R
{
int lp=max(A-a,lc);
int rp=min(B-a,rc);
if(lp<=rp)
ans=(ans+(rp-lp+1)*4)%P;
}
//L<=b+c<=R
{
int lp=max(A-b,lc);
int rp=min(B-b,rc);
if(lp<=rp)
ans=(ans+(rp-lp+1)*4)%P;
}
//L<=a+d<=R
{
int ld=A-a,rd=B-a;
// ld <= n/c <= rd
int L=1,R=n+2;
while(R-L>1)
{
int mid=(L+R)>>1;
if(n/mid>=ld)
L=mid;
else
R=mid;
}
int rp=L;
L=0,R=n+1;
while(R-L>1)
{
int mid=(L+R)>>1;
if(n/mid<=rd)
R=mid;
else
L=mid;
}
int lp=R;
lp=max(lp,lc);
rp=min(rp,rc);
if(lp<=rp)
ans=(ans+(rp-lp+1)*4)%P;
}
//L<=b+d<=R
{
int ld=A-b,rd=B-b;
// ld <= n/c <= rd
int L=1,R=n+2;
while(R-L>1)
{
int mid=(L+R)>>1;
if(n/mid>=ld)
L=mid;
else
R=mid;
}
int rp=L;
L=0,R=n+1;
while(R-L>1)
{
int mid=(L+R)>>1;
if(n/mid<=rd)
R=mid;
else
L=mid;
}
int lp=R;
lp=max(lp,lc);
rp=min(rp,rc);
if(lp<=rp)
ans=(ans+(rp-lp+1)*4)%P;
}
//L<=c+d<=R
{
int L=1,R=rc+1;
while(R-L>1)
{
int mid=(L+R)>>1;
if(mid+n/mid>=A)
L=mid;
else
R=mid;
}
int rp=L;
if(rp+n/rp<A)
rp--;
L=0,R=rc;
while(R-L>1)
{
int mid=(L+R)>>1;
if(mid+n/mid<=B)
R=mid;
else
L=mid;
}
int lp=R;
if(lp+n/lp>B)
lp++;
// cout <<lp <<" " <<rp <<" " <<lc <<" " <<rc <<"\n";
lp=max(lp,lc);
rp=min(rp,rc);
if(lp<=rp)
ans=(ans+(rp-lp+1)*4)%P;
}
}
cout<<ans<<endl;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3580kb
input:
24 4 6
output:
12
result:
ok single line: '12'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3600kb
input:
30 5 6
output:
4
result:
ok single line: '4'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3736kb
input:
30 9 20
output:
0
result:
ok single line: '0'
Test #4:
score: 0
Accepted
time: 6098ms
memory: 3584kb
input:
100000000000000 1 100000000000000
output:
288287412
result:
ok single line: '288287412'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
51256 4 35
output:
29116
result:
ok single line: '29116'
Test #6:
score: 0
Accepted
time: 1ms
memory: 3588kb
input:
5845 10 163
output:
10724
result:
ok single line: '10724'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3712kb
input:
47139 6 167
output:
71716
result:
ok single line: '71716'
Test #8:
score: 0
Accepted
time: 0ms
memory: 3712kb
input:
20603 5 167
output:
36556
result:
ok single line: '36556'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
37521 1 76
output:
46956
result:
ok single line: '46956'
Test #10:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
1 1 10
output:
0
result:
ok single line: '0'
Test #11:
score: 0
Accepted
time: 6006ms
memory: 3596kb
input:
97083668416826 7 3808058212682
output:
392082021
result:
ok single line: '392082021'
Test #12:
score: 0
Accepted
time: 5455ms
memory: 3672kb
input:
81206220725808 2 45630676823009
output:
956896057
result:
ok single line: '956896057'
Test #13:
score: 0
Accepted
time: 5537ms
memory: 3656kb
input:
83357713762616 8 7064282922851
output:
238276229
result:
ok single line: '238276229'
Test #14:
score: 0
Accepted
time: 5606ms
memory: 3676kb
input:
85445471832361 6 56105073865950
output:
611528255
result:
ok single line: '611528255'
Test #15:
score: 0
Accepted
time: 5858ms
memory: 3716kb
input:
92699451513867 7 40224031632009
output:
527678799
result:
ok single line: '527678799'
Test #16:
score: 0
Accepted
time: 5891ms
memory: 3588kb
input:
91239680645595 2 6753821
output:
949101816
result:
ok single line: '949101816'
Test #17:
score: 0
Accepted
time: 5665ms
memory: 3532kb
input:
84407166448013 9 9804427
output:
100140616
result:
ok single line: '100140616'
Test #18:
score: 0
Accepted
time: 5928ms
memory: 3668kb
input:
92300784798569 1 7627255
output:
506797132
result:
ok single line: '506797132'
Test #19:
score: 0
Accepted
time: 5731ms
memory: 3672kb
input:
86360099055961 16 9430857
output:
909028853
result:
ok single line: '909028853'
Test #20:
score: 0
Accepted
time: 6084ms
memory: 3656kb
input:
96378494166704 16 4791452
output:
961637838
result:
ok single line: '961637838'
Test #21:
score: 0
Accepted
time: 6054ms
memory: 3588kb
input:
92800119725342 19 71735
output:
549693103
result:
ok single line: '549693103'
Test #22:
score: 0
Accepted
time: 6204ms
memory: 3660kb
input:
99241248175798 28 509556
output:
885647806
result:
ok single line: '885647806'
Test #23:
score: 0
Accepted
time: 5900ms
memory: 3588kb
input:
90117794770692 17 324480
output:
701148580
result:
ok single line: '701148580'
Test #24:
score: 0
Accepted
time: 6229ms
memory: 3664kb
input:
99417213318477 67 305057
output:
478902343
result:
ok single line: '478902343'
Test #25:
score: 0
Accepted
time: 5910ms
memory: 3592kb
input:
90584131165693 78 897660
output:
879735139
result:
ok single line: '879735139'
Test #26:
score: 0
Accepted
time: 5987ms
memory: 3712kb
input:
92129120236843 702 5645
output:
28323443
result:
ok single line: '28323443'
Test #27:
score: 0
Accepted
time: 5940ms
memory: 3532kb
input:
90203225783100 802 6272
output:
966952096
result:
ok single line: '966952096'
Test #28:
score: 0
Accepted
time: 5555ms
memory: 3652kb
input:
82248112022135 533 2266
output:
280479804
result:
ok single line: '280479804'
Test #29:
score: 0
Accepted
time: 5819ms
memory: 3592kb
input:
84853900427215 368 25431
output:
471070321
result:
ok single line: '471070321'
Test #30:
score: 0
Accepted
time: 6056ms
memory: 3532kb
input:
91754392379969 149 24312
output:
577285220
result:
ok single line: '577285220'
Test #31:
score: 0
Accepted
time: 6078ms
memory: 3584kb
input:
100000000000000 1 2
output:
0
result:
ok single line: '0'
Test #32:
score: 0
Accepted
time: 5754ms
memory: 3712kb
input:
100000000000000 10000000000000 100000000000000
output:
36
result:
ok single line: '36'