求助

P1618 三连击(升级版)

DreamCHN @ 2023-11-13 16:41:15

rt

满分但又不完全满分的链接

#include<bits/stdc++.h> 
using namespace std;

int nums[10];
bool check(int x){
    int a = x / 100;
    int b = (x / 10) % 10;
    int c = x % 10;
    if(a == b || a == c || b == c || !a || !b || !c) return false;
    if(nums[a] != 0 || nums[b] != 0 || nums[c] != 0) return false;
    else{
        nums[a]++;
        nums[b]++;
        nums[c]++;
        return true;
    }
}

int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    bool flag = false;
    for(int i = 123;i < 330;i++){
        memset(nums, 0, sizeof nums);
        if(!check(i)) continue;          
        if(i * b / a > 987 || i * c / a > 987) break;
        if(check(i * b / a) && check(i * c / a)){
            flag = true;
            printf("%d %d %d\n", i, i * b / a, i * c / a); 
        }
    }
    if(a=0){
        cout<<"NO!!!"<<endl;
        return 0;
    }
    if(!flag) 
        cout << "No!!!" << endl;
    if(a==0&&b==1&&c==2)
        cout << "No!!!" << endl;
    return 0; 
}

by ATZdhjeb @ 2023-11-13 16:44:43

有没有可能 A = 0


by 2021zjhs005 @ 2023-11-13 16:46:54

@DreamCHN

有一种可能:

a=0

这样除以 a 就会 RE (零不能做除数)。

特判一下,输出 NO!!!就行了(我也这样错了一次)。


by DreamCHN @ 2023-11-13 16:58:57

@2021zjhs005

有没有一种可能

 if(a=0){
        cout<<"NO!!!"<<endl;
        return 0;
    }

by 2021zjhs005 @ 2023-11-13 17:02:17

@DreamCHN

这是什么意思?(好像是 a==0,不是a=0)。


by DreamCHN @ 2023-11-13 17:04:41

@2021zjhs005

改过了,还输不行


by 2021zjhs005 @ 2023-11-13 17:06:52

@DreamCHN

请把代码发一下,谢谢。


by 2021zjhs005 @ 2023-11-13 17:07:59

@DreamCHN

a==0要在输入后马上特判。

不然已经除过 0 了,还是运行错误。


by DreamCHN @ 2023-11-13 17:11:59

@2021zjhs005 还是RE

#include<bits/stdc++.h> 
using namespace std;

int nums[10];
bool check(int x){
    int a = x / 100;
    int b = (x / 10) % 10;
    int c = x % 10;
    if(a == b || a == c || b == c || !a || !b || !c) return false;
    if(nums[a] != 0 || nums[b] != 0 || nums[c] != 0) return false;
    else{
        nums[a]++;
        nums[b]++;
        nums[c]++;
        return true;
    }
}

int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
        cout<<"NO!!!"<<endl;
    bool flag = false;
    for(int i = 123;i < 330;i++){
        memset(nums, 0, sizeof nums);
        if(!check(i)) continue;          
        if(i * b / a > 987 || i * c / a > 987) break;
        if(check(i * b / a) && check(i * c / a)){
            flag = true;
            printf("%d %d %d\n", i, i * b / a, i * c / a); 
        }
    }
    if(!flag) {
        cout << "No!!!" << endl;
    }
    return 0; 
}

by 2021zjhs005 @ 2023-11-13 17:12:44

@DreamCHN

没有 return 0


by 2021zjhs005 @ 2023-11-13 17:13:13

在特判的时候。


| 下一页