为什么我这里测试的都是对的,一放到平台上,凡是不是输出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;
}