C趣味程序百例(20)乘式还原
64.乘法归约
A表示从0到9的前五个数,Z表示后五个数。请恢复以下乘法。
A Z A
×A A Z
-
A A A A A
A A Z Z
Z A
-这个问题的关键在于如何有效地判断产品的各个部分是否满足问题的含义。这个问题处理不好,程序会很长。程序的实现采用了一个判断函数,所有的数字都由来函数的标志串统一判断处理。
*节目和节目评论
#包含
作废打印(长a、长b、长S1、长S2、长S3);
int jud(long q,char * pflag);
void main()
{
long I,j,k,l,m,n,term,t1,t2,T3;
int标志;
for(I = 0;I for(j = 5;j for(k = 0;k {
term = 100 * I+10 * j+k;/*被乘数*/
for(flag=0,n = 0;n flag = jud((T3 = ++ n * 100 * term)/100," 001 ");/*判断第三个部分积*/
if(flag)
{
for(flag = 0,m = 0;m flag=jud((t2=++m*10*term)/10," 1100 ");/*判断第二个部分积*/
if(flag)
{
for(flag = 0,l = 5;l flag=jud(t1=++l*term," 0000 ");/*判断第一个部分积*/
if(flag & jud(t1+T2+T3," 00101 ")/*判断乘法公式的积*/
print (term,n * 100+m * 10+l,t1,T2
}
}
0条评论