80分求助!!!

P1618 三连击(升级版)

zlinda @ 2022-06-05 02:39:58

#include<bits/stdc++.h>
int a,b,c,i,j,hhh[10],x,y,z,t,ans;
using namespace std;
int gcd(int m,int n)
{
    if(n%m!=0)
    {
        n=n%m;
        return gcd(n,m);
    }
    else return m;
}
int main()
{
    cin>>a>>b>>c;
    x=gcd(a,b); y=gcd(b,c); z=gcd(x,y);
    a/=z; b/=z; c/=z;
    for(i=123;i<=333;i++)
    {
        if(i%a==0) 
        {   
            x=i;
            y=i/a*b;
            z=i/a*c;
            for(j=1;j<=3;j++)
            {
                hhh[x%10]++; hhh[y%10]++; hhh[z%10]++;
                x/=10; y/=10; z/=10;
            }
            for(j=1;j<=9;j++)
            {
                if(hhh[j]==0) t=0;
                hhh[j]=0;
            }
            x=i;
            y=i/a*b;
            z=i/a*c;
            if(t!=0) 
            {
                cout<<x<<' '<<y<<' '<<z<<endl;
                ans++;
            } 
            t=1;
        } 
    }
    if(ans==0) cout<<"No!!!"<<endl;
    return 0;
}

救救孩子


by Fgju @ 2022-06-24 22:10:53

假如输入数据中的A就是123的话,那么最外层循环只会执行一次,根本来不及给t赋初值1。

将变量定义中的t初始化为1即可。

int a,b,c,i,j,hhh[10],x,y,z,t=1,ans;

Accepted.@zlinda


|