社区讨论
求助QAQ,对于题面的理解有误??????
P1463[POI 2001 R1 / ZJOI2006 / HAOI2007] 反素数参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo8gsq2i
- 此快照首次捕获于
- 2023/10/27 18:22 2 年前
- 此快照最后确认于
- 2023/10/27 18:22 2 年前
,题面不是求最大的反质数吗,那么如果假设有两个数,两者的约数个数相同,答案不应该取吗
但我这样写的:
CPPvoid dfs(int cur,int step,int sum,int top)
{
if(sum>maxn)
{
maxn=sum;
ans=cur;
}
else if(sum==maxn)ans=max(ans,cur);
int tmp=cur;
for(int i=1;i<=top;++i)
{
if(tmp*p[step]>n)return;
tmp*=p[step];
int k=sum*(i+1);
if(tmp<=n)dfs(tmp,step+1,k,i);
}
}
这样就穿了,只有30分
但如果,我们把上述代码的改成,就能
代码如下:
CPPvoid dfs(int cur,int step,int sum,int top)
{
if(sum>maxn)
{
maxn=sum;
ans=cur;
}
else if(sum==maxn)ans=min(ans,cur);
int tmp=cur;
for(int i=1;i<=top;++i)
{
if(tmp*p[step]>n)return;
tmp*=p[step];
int k=sum*(i+1);
if(tmp<=n)dfs(tmp,step+1,k,i);
}
}
所以,究竟是我的理解出问题了,还是题面出现问题了QAQ(虽然这题过了这么多人大概率是我的理解有问题,但从题面我真的没有分析出取最小值的意思来QAQ)
回复
共 4 条回复,欢迎继续交流。
正在加载回复...