40分求助只过了6、7

P1618 三连击(升级版)

SuperCheng @ 2023-03-07 21:29:57

刚接触算法,代码纯靠感觉写,只过了6、7,求大佬指点

#include <iostream>
#include <string>
#define ROM 1000
using namespace std;
//检查一个数字里面是否有重复的
bool checkint(int num) {
    if (num / 100 == num / 10 % 10 || num / 10 % 10 == num % 100 % 10 || num / 100 == num % 100 % 10) return true;
    return false;
}
//判断第二个和第三个数字中的每一个数字是否在第一个数字中出现
bool checkre(int num, int num1) {
    string a = to_string(num);
    string b = to_string(num1);
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++)
            if (a[i] == b[j]) 
                return false;
    }
    return true;
}
//检查是否第二个和第三个数字是否是小数
bool checkf(float num) {
    int n;
    n = num;
    if (num - n == 0) return false;
    return true;
}
int main() {
    //定义成浮点型一是为了防止用户输入小数,二是为了后面好判断是否为整数
    float a, b, c; 
    int num[ROM],result[ROM], num1[ROM], num2[ROM], n = 0, n1 = 0, n2 = 0, n3 = 0;
    bool judge = true;
    cin >> a >> b >> c;
    if (a > b || b > c || a > c ) return 0;
    for (int i = 123; i <= 987; i++) {
        if (!checkint(i)) {
            num[n] = i;
            n++;
        }
    }
    for (int j = 0; j < n; j++)
    {
        //判断是否满足为整数和数字不重复
        if (!checkf(b / a * num[j]) && !checkint(b / a * num[j]) && b / a * num[j] < 1000);
        else continue;
        if (!checkf(c / a * num[j]) && !checkint(c / a * num[j]) && c / a * num[j] < 1000);
        else continue;
        num1[n2] = b / a * num[j];
        num2[n3] = c / a * num[j];
        result[n1] = num[j];
        n1++;
        n2++;
        n3++;
    }
    for (int k = 0; k < n1; k++) {
        if (checkre(result[k], num1[k]))
            if (checkre(result[k], num2[k]))
                if (checkre(num1[k], num2[k])) {
                    cout << result[k] << " "  << num1[k] << " " << num2[k] << endl;
                    judge = false;
                }
    }
    if (judge) cout << "NO!!!";
    return 0;
}

谢谢大佬们


by tu_huang_di @ 2023-03-10 20:59:03

#include<bits/stdc++.h>

using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int a,b,c; cin>>a>>b>>c; bool flag=0; for(int i=1;i<4;i++) { for(int ii=1;ii<10;ii++) { for(int iii=1;iii<10;iii++) { for(int iiii=1;iiii<7;iiii++) { for(int iiiii=1;iiiii<10;iiiii++) { for(int iiiiii=1;iiiiii<10;iiiiii++) { for(int iiiiiii=1;iiiiiii<10;iiiiiii++) { for(int iiiiiiii=1;iiiiiiii<10;iiiiiiii++) { for(int iiiiiiiii=1;iiiiiiiii<10;iiiiiiiii++) { if(i!=ii&&i!=iii&&i!=iiii&&i!=iiiii&&i!=iiiiii&&i!=iiiiiii&&i!=iiiiiiii&&i!=iiiiiiiii&&ii!=iii&&ii!=iiii&&ii!=iiiii&&ii!=iiiiii&&ii!=iiiiiii&&ii!=iiiiiiii&&ii!=iiiiiiiii&&iii!=iiii&&iii!=iiiii&&iii!=iiiiii&&iii!=iiiiiii&&iii!=iiiiiiii&&iii!=iiiiiiiii&&iiii!=iiiii&&iiii!=iiiiii&&iiii!=iiiiiii&&iiii!=iiiiiiii&&iiii!=iiiiiiiii&&iiiii!=iiiiii&&iiiii!=iiiiiii&&iiiii!=iiiiiiii&&iiiii!=iiiiiiiii&&iiiiii!=iiiiiii&&iiiiii!=iiiiiiii&&iiiiii!=iiiiiiiii&&iiiiiii!=iiiiiiii&&iiiiiii!=iiiiiiiii&&iiiiiiii!=iiiiiiiii) {
if(b/a(i100+ii10+iii)==iiii100+iiiii10+iiiiii&&c/a(i100+ii10+iii)==iiiiiii100+iiiiiiii10+iiiiiiiii) { cout<<i100+ii10+iii<<" "<<iiii100+iiiii10+iiiiii<<" "<<iiiiiii100+iiiiiiii10+iiiiiiiii<<"\n"; flag=1; } } } } } } } } } } } if(flag==0) cout<<"No!!!"; return 0; }


by tu_huang_di @ 2023-03-10 21:00:34


只过了80分

|