凡是输出数字的都是答案错误???
查看原帖
凡是输出数字的都是答案错误???
1068224
a15801016376楼主2024/8/21 15:56

为什么我这里测试的都是对的,一放到平台上,凡是不是输出No!!!的都是答案错误,放代码:

#include<stdio.h>
#include<stdbool.h>
bool flag=true;
void swap(int *a,int *b) {
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
int min(int a,int b) {
    return a<b?a:b;
}
int max(int a,int b) {
    return a>b?a:b;
}
void sort(int *str) {
    for(int i=0;i<9;i++) {
        for(int j=i+1;j<9;j++) {
            if(str[i]>str[j]) {
                swap(str+i,str+j);
            }
        }
    }
}

bool IsHundred(int num) {
    if(num>=100&&num<=999) {
        return true;
    }
    return false;
}
bool IsDifference(int *a) {
    int num[9];
    for(int i=0;i<3;i++) {
        num[3*i] = a[i] / 100;
        num[3*i+1] = a[i] % 100 / 10;
        num[3*i+2] = a[i] % 10;
    }
    sort(num);
    for(int i=0;i<9;i++) {
        int j=i+1;
        if(num[i]==num[j]) {
            return false;
        }
        if(num[i]==0) {
            return false;
        }
    }
    return true;
}
void Multiple(int k,int *arr,int *str) {
    for(int i=0;i<3;i++) {
        str[i] = k*arr[i];
    }
}

int main(void) {
    int str[3],arr[3];
    for(int i=0;i<3;i++) {
        scanf("%d",&str[i]);
    }
    for(int i=1;i<=999;i++) {
        Multiple(i,str,arr);
        if(IsHundred(arr[0])&&IsHundred(arr[1])&&IsHundred(arr[2])){
            if(IsDifference(arr)) {
                printf("%d %d %d\n",arr[0],arr[1],arr[2]);
                flag=false;
            }
        }
    }
    if(flag) {
        printf("No!!!");
    }
    return 0;
}
2024/8/21 15:56
加载中...