64.乘式還原 A代表數字0到9中的前五個數字,Z代表后五個數字,請還原下列乘式。 A Z A × A A Z ------------ A A A A A A Z Z Z A A ------------ Z A Z A A *問題分析與算法設計 問題本身并不復雜,可以對乘式中的每一位使用窮舉法,最終可以得到結果。本題的要害在于怎樣有效的判定每個部分積的每一位是否滿足題意,這一問題處理不好,編寫的程序會很長。程序實現中采用了一個判定函數,通過傳入函數的標志字符串對所有的數進行統一的判定處理。 *程序與程序注釋 #include<stdio.h> void print(long a,long b,long s1,long s2,long s3); int jud(long q,char *pflag); void main() { long i,j,k,l,m,n,term,t1,t2,t3; int flag; for(i=0;i<=4;++i) /*被乘數的第一位*/ for(j=5;j<=9;++j) /*被乘數的第二位*/ for(k=0;k<=4;++k) /*被乘數的第三位*/ { term=100*i+10*j+k; /*被乘數*/ for(flag=0,n=0;n<4&&!flag;) /*乘數的第一位*/ flag=jud((t3=++n*100*term)/100,"001"); /*判定第三個部分積*/ if(flag) { for(flag=0,m=0;m<4&&!flag;) /*乘數的第二位*/ flag=jud((t2=++m*10*term)/10,"1100"); /*判定第二個部分積*/ &nbs