求如何修改(80分)(c++)

P1618 三连击(升级版)

CallMeTewi @ 2016-06-28 14:06:50

[codec]

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int a=0,b=0,c=0;
bool fl=false;
void check(int);
int main()
{
    cin>>a>>b>>c;
    for (int i=123;i<987;i++)
        check(i);
    if (!fl) cout<<"No!!!"<<endl;
    return 0;
}
void check(int x)
{
    int n=x/a;
    if (n*a!=x) return;
    int y=n*b;
    int z=n*c;
    if (y>987||z>987) return;
    vector<int> ch;
    ch.push_back(x/100);
    ch.push_back(x%100/10);
    ch.push_back(x%10);
    ch.push_back(y/100);
    ch.push_back(y%100/10);
    ch.push_back(y%10);
    ch.push_back(z/100);
    ch.push_back(z%100/10);
    ch.push_back(z%10);
    sort(ch.begin(),ch.end());
    if (ch.end()==unique(ch.begin(),ch.end()))
    {
        cout<<x<<" "<<y<<" "<<z<<endl;
        fl=true;
    }
}

[/codec]

第一个测试点通过不能 = =


by lzr20040310 @ 2016-06-28 22:10:37

你好牛,你的代码我现在都看不懂

但我1个月前就做出来了。

并且我2个月前才学的。

给一下简单的思路(我觉得你可能弄复杂了)

1、输入

2、搜索与枚举最小的数(不是a的倍数跳过)

3、根据比例算出另外两个数

4、拆!拆成9个一位数然后搜1~9看有缺没

5、没缺输出,返回2


|