fix: 修复P6003.cpp中的计算逻辑错误并调整P6003cal.cpp的打印顺序

修复P6003.cpp中check函数的计算逻辑,优化循环处理并提前返回结果
调整P6003cal.cpp中变量打印顺序以匹配实际计算流程
This commit is contained in:
Zengtudor 2025-10-16 11:00:16 +08:00
parent 1f0526403f
commit 5546dd0eed
2 changed files with 9 additions and 3 deletions

View File

@ -13,8 +13,8 @@ int main(){
for(ll i=1;i<=k;i++){
ll y=(n-g)/x;
y=std::max(y,m);
g+=y;
printf("(n-g)=%lld, y=%lld, x=%lld\n",n-g,y,x);
g+=y;
}
printf("-- x=%lld, g=%lld\n\n",x,g);
}

View File

@ -1,3 +1,4 @@
#include <algorithm>
#include <cstdint>
#include <cstdio>
#include <iostream>
@ -11,9 +12,14 @@ sl bool check(ll x){
for(ll i=1;i<=k;i++){
ll y=(n-g)/x;
if(y<m){
y=m;
g+=m*(k-i+1);
return g>=n;
}else{
ll nxt = ((n-g)-(y*x))/y+1;
nxt=std::min(nxt,k-i+1);
g+=y*nxt;
i+=nxt-1;
}
g+=y;
}
return g>=n;
}