求大犇,为什么只能输出“NO”

P1618 三连击(升级版)

Dog_Two @ 2017-05-10 17:20:51

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
bool orr(int,int,int);
int num[9];
int main()
{
    bool q=false;
    memset(num,0,sizeof(num));
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0||b==0||c==0)
    {
        printf("No!!!");
        return 0;
    }
    for(int i=111;i<=333;i++)
    {
        if((i%a==0)&&(orr(i,i*b/a,i*c/a)))
        {
            printf("%d%d%d\n",i,i*b/a,i*c/a);
            q=1;
        }
    }
    if(q==0)
    {
      printf("No!!!");
    }
    return 0;
}
bool orr(int a,int b,int c)
{
    while(a>0)
    {
        num[a%10]++;
        a/=10;
    }
    while(b>0)
    {
        num[b%10]++;
        b/=10;
    }
    while(c>0)
    {
        num[c%10]++;
        c/=10;
    }
    for(int i=0;i<=9;i++)
    {
        if(num[i]!=1)
        {
            return false;
        }
    }
    return true;
}

by Magi_karp @ 2017-06-02 23:06:17

首先a的循环就有问题

没人说a<b<c

所以a应该是123<=a<=987;

但是最主要是你orr的for循环里

num[0]基本上根本没碰到,

而且题面是把1~9分没带0

所以num【0】极大可能是0

所以返回false

所以。。。


|