40分求助

P1618 三连击(升级版)

前面$ x\times y\times z\times a\times b\times c\times j\times k\times l$固定等于362800,后面的$ A\times B\times C\times (A\times 2)\times (B\times 2)\times (C\times 2)\times (A\times 3)\times (B\times 3)\times (C\times 3)$并不固定
by Ravener @ 2024-03-05 20:35:34


@[Ravener](/user/956382) emmmmm 那该怎么办呢
by danaqi_ @ 2024-03-06 18:12:38


@[Ravener](/user/956382) 不对啊 前面的为什么是固定的?
by danaqi_ @ 2024-03-06 18:17:19


依题意,$x,y,z,a,b,c,j,k,l$对应$1$~$9$,所以乘积固定
by Ravener @ 2024-03-06 19:36:12


@[Ravener](/user/956382) ```cpp #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<cmath> #include<algorithm> using namespace std; int sum; int main(){ int x,y,z,a,b,c,j,k,l,A,B,C; //freopen("三连击(升级).in","r",stdin); //freopen("三连击(升级).out","w",stdout); scanf("%d%d%d",&A,&B,&C); for(int i=123;i<=999;++i){ x=i/100; y=i/10%10; z=i%10; a=i*2/100; b=i*2/10%10; c=i*2%10; j=i*3/100; k=i*3/10%10; l=i*3%10; if(x+y+z+a+b+c+j+k+l==1+2+3+4+5+6+7+8+9&&x*y*z*a*b*c*j*k*l==1*2*3*4*5*6*7*8*9){ printf("%d %d %d\n",i*A,i*B,i*C); ++sum; } } if(sum==0) printf("No!!!"); //fclose(stdin); //fclose(stdout); return 0; } ``` 我就是因为这样做得了20分 才那样做的
by danaqi_ @ 2024-03-09 10:01:27


你定义$ x,y,z,a,b,c,j,k,l$的方式是不是有点问题 是不是应该改成这样 ``` x=i*A/100; y=i*A/10%10; z=i*A%10; a=i*B/100; b=i*B/10%10; c=i*B%10; j=i*C/100; k=i*C/10%10; l=i*C%10; ```
by Ravener @ 2024-03-10 21:36:29


你下面那个代码改了之后能拿80分 剩下的20分需要特判$A=123,B=456,C=789$的情况 ~~(话说这玩意能撤回吗~~
by Ravener @ 2024-03-10 21:50:25


@[danaqi_](/user/689105)
by Ravener @ 2024-03-10 21:51:06


@[Ravener](/user/956382) 谢谢 终于改对了
by danaqi_ @ 2024-03-11 19:29:21


|