2

文字 a、b、c、d、e が 1 から 9 までの数字を表し、それらが互いに等しくなることはないと仮定します。

質問:

いくつのイコールを満たすことができますか(ab * cde = adb * ce)。例: 36 * 495 = 396 * 45.

これが私のコードで、結果は正しいです。しかし、私のコードは、特に(if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&c*d*e!=0))

誰かが私にもっと良い解決策を教えていただければ幸いです。

#include<stdio.h>
main(){
    int a,b,c,d,e,m,n,i=0;
    long f1,f2,f3,f4;
    for(m=11;m<=99;m++){
        a=m/10;
        b=m%10;
        if(a!=b&&a*b!=0) 
        {
            for(n=101;n<=999;n++)
            {
                c=n/100;
                d=n%100/10;
                e=n%10;
                if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&c*d*e!=0)
                {
                    f1=a*10+b;
                    f2=c*100+d*10+e;
                    f3=a*100+d*10+b;
                    f4=c*10+e;
                    if(f1*f2==f3*f4) i++;
                    printf("\n%d%d*%d%d%d*=%d%d%d*%d%d\n",a,b,c,d,e,a,d,b,c,e);
                }
            }
        }
    }
    printf("%d\n",i);
    return 0;
}
4

2 に答える 2