感觉一样的两个解为啥一个100一个60分???

P1618 三连击(升级版)

lulinhao1997 @ 2019-11-18 21:01:51

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[10];
    int i;
    for(i=0;i<10;i++){
        a[i]=i;
    }
    int A,B,C,flag;
    flag=0;
    cin>>A>>B>>C;
    do{
        if((a[1]*100+a[2]*10+a[3])/A==(a[4]*100+a[5]*10+a[6])/B&&(a[1]*100+a[2]*10+a[3])/A==(a[7]*100+a[8]*10+a[9])/C){
            cout<<a[1]<<a[2]<<a[3]<<" "<<a[4]<<a[5]<<a[6]<<" "<<a[7]<<a[8]<<a[9]<<endl;
            flag++;
        }
    }while(next_permutation(a+1,a+10));
    if(flag==0){
        cout<<"No!!!";
    }
    return 0;
} 

by lulinhao1997 @ 2019-11-18 21:05:45

上面的解60分, 把

if((a[1]*100+a[2]*10+a[3])/A==(a[4]*100+a[5]*10+a[6])/B&&(a[1]*100+a[2]*10+a[3])/A==(a[7]*100+a[8]*10+a[9])/C)

改成

if((a[1]*100+a[2]*10+a[3])*B==(a[4]*100+a[5]*10+a[6])*A&&(a[1]*100+a[2]*10+a[3])*C==(a[7]*100+a[8]*10+a[9])*A)

就100分了,为什么呀???


by 菜鸡gyf @ 2019-11-19 21:04:07

因为本来乘起来不相等的两个数同时除以一个数后,也可能相等


by lulinhao1997 @ 2019-11-26 19:56:48

@guyufan 明白了,谢谢!


|