QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#820696 | #9864. Coin | xinlengweishang | WA | 0ms | 3904kb | C++20 | 2.0kb | 2024-12-18 23:31:49 | 2024-12-18 23:31:49 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
using namespace std;
void slove2(ll n,ll k){
ll site=1;
ll round=0;
ll t;
while(1){
round++;
if(n%k) t=n/k+1;
else t=n/k;
n-=t;
if(n==1) break;
}
// printf("%lld\n",round);
for(int i=1;i<=round;i++){
// printf("%d %lld\n",i,site);
if(site%(k-1)) t=site/(k-1)+1;
else t=site/(k-1);
site=site+t;
}
printf("%lld\n",site);
return ;
}
ll r[5000010];
void slove1(ll n,ll k){
ll t;
ll sumr=0;
if(n%k) t=n/k+1;
else t=n/k;
// printf("t=%lld\n",t);
for(int i=t;i>=1;i--){
// printf("i=%d n=%lld\n",i,n);
r[i]=(n-(k*(i-1)+1))/i+1;
n-=r[i]*i;
sumr+=r[i];
}
r[1]--;
sumr--;
// printf("sumr=%lld\n",sumr);
// for(int i=1;i<=t;i++){
// printf("%d %lld\n",i,r[i]);
// }
ll site=1;
ll round=1;
while(1){
ll time;
ll x;
if(site%(k-1)) x=site/(k-1)+1;
else x=site/(k-1);
// printf("x=%lld\n",x);
ll l=0,r=10000000;
while(l+1<r){
ll mid=l+r>>1;
if(site+mid*x>x*k+1) r=mid;
else l=mid;
}
time=l;
if(time==1){
if((site+time*x-1)%k==0){
if(sumr>=1){
sumr-=1;
site+=x+1;
}
else {
break;
}
}
else{
if(sumr>=2){
sumr-=2;
site+=x+x+1;
}
else{
site+=x*time;
break;
}
}
}
else if(sumr>=time){
if((site+time*x-1)%k==0){
site+=time*x+1;
sumr-=time;
}
else {
if(sumr>=time+1){
sumr-=time+1;
site+=time*x+x+1;
}
else{
site+=time*x;
break;
}
}
}
else {
site+=sumr*x;
break;
}
// printf("site=%lld %lld %lld sum=%lld\n",site,time,x,sumr);
}
printf("%lld\n",site);
}
void slove(){
ll n,k;
scanf("%lld%lld",&n,&k);
if(n/k>=k) slove2(n,k);
else
slove1(n,k);
return ;
}
int main(){
int T;
scanf("%d",&T);
while(T--) slove();
return 0;
}
/*
4
6 2
8 3
10000 2
1919810 114514
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3904kb
input:
4 6 2 8 3 10000 2 1919810 114514
output:
4 8 8192 1919805
result:
ok 4 number(s): "4 8 8192 1919805"
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3748kb
input:
100 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 2 11 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 4 11 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6 10 6 11 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 7 10 7 11 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8 10 8 11 9 ...
output:
2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 3 4 4 4 4 4 4 4 4 4 8 4 5 5 5 5 5 5 5 4 8 8 5 6 6 6 6 6 6 4 8 8 7 6 7 7 7 7 7 8 8 8 7 8 7 8 8 8 8 8 8 8 9 8 9 8 9 9 9 8 8 8 9 10 9 10 9 10 10 8 8 15 9 10 11 10 11 10 11
result:
wrong answer 32nd numbers differ - expected: '5', found: '8'