80分萌新求救qwq

P1618 三连击(升级版)

火花 @ 2019-09-01 21:14:40

#include<iostream>
#include<algorithm>
#include<string>

using namespace std;

int main()
{
    string s = "123456789";
    float a, b, c;
    int p = 0;
    cin >> a >> b >> c; 
    while (next_permutation(s.begin(), s.end()))
    {
        //cout << atof(s.substr(0, 3).c_str()) << " " << atof(s.substr(3, 3).c_str()) << " " << atof(s.substr(6, 3).c_str()) << endl;
        if(atof(s.substr(3, 3).c_str()) / atof(s.substr(0, 3).c_str()) == b / a && atof(s.substr(6, 3).c_str()) / atof(s.substr(0, 3).c_str()) == c / a)
        {
            cout << s.substr(0, 3) << " " << s.substr(3, 3) << " " << s.substr(6, 3) << endl;
            p = 1;
        }
    }
    if(p == 0) cout << "No!!!" << endl;
    return 0;
}

不知道哪里有问题啊qaq


by 火花 @ 2019-09-01 21:34:20

有了有了
有两个问题:
1.while next_permutation直接就到下一种排序了,所以123 456 789 这个就没试过
2.要double类型??atof转完不应该是float吗,那float/float 和 float/float 为什么不相等??我不是很清楚


by S1gMa @ 2019-09-20 18:06:20

先解决你第一个问题,用next_permutation时候先输出一遍原式

第二个问题你直接强制转换就可以的这样的话可能会白给就像17csp/sT1这样就直接凉凉(后来也是官方改的测试数据)


by S1gMa @ 2019-09-20 18:06:24

@htq233


|