蒟蒻求助(悬谢)

P1008 [NOIP1998 普及组] 三连击

```cpp a%10+a/10%10+a/100+b%10+b/10%10+b/100+c%10+c/10%10+c/100==45 ``` 不能保证就是1-9吧
by wwqwq @ 2023-08-13 19:18:18


@[魏蕴博](/user/800937) 你这样的方式是错误的,并没有把1~9都枚举到。
by qinsishi @ 2023-08-13 19:18:27


不和百钱买百鸡差不多嘛 ``` #include<iostream> using namespace std; int main(){ int a,b,c; for (int i=1;i<=9;i++)//第一个数 for (int j=1;j<=9;j++)//第二个数 for (int k=1;k<=9;k++){//第三个数 a=i*100+j*10+k; b=a*2; c=a*3; cf(a);//将创造出的满足条件的数扔到函数中拆分 cf(b); cf(c); if(d[1]==1&&d[2]==1&&d[3]==1&&d[4]==1&&d[5]==1&&d[6]==1&&d[7]==1&&d[8]==1&&d[9]==1){//如果这3个创造出来的数满足每一位都被使用且只用1次,输出 cout<<a<<" "<<b<<" "<<c<<endl; } for (int e=1;e<=9;e++){//判断之后将计数的数组置为0,方便下次使用,不然你一个数都不会输出 d[e]=0;//其实可以用memset重置,但是懒得修改了。不了解memset的可以百度一下 } } return 0; } ```
by Leo114514 @ 2023-08-20 08:40:37


@[Leo1q2a3z](/user/1067345) 这个放前面 ``` int cf(int x){//我们定义一个函数,拆分我们组合出来的每一位数,所以它叫拆分√ while(x!=0){ gw=x%10; x=(x-gw)/10; //其实完全可以x/10,为了理解方便,我们将x的个位减为0,然后/10把0削去,不断将当期的数拆分 d[gw]++;//计数器加1 } ```
by Leo114514 @ 2023-08-20 08:43:59


测试点下载: 192 384 576 219 438 657 273 546 819 327 654 981
by HalloC @ 2023-09-02 15:40:08


|