C语言:乘式还原

#include <stdio.h>
#define NUM 5
#define C_NUM 4
int a[NUM+1];
int b[]={0,2,3,5,7};
main()
{  	  		  		 
    int i,not_finish=1;
    i=2;
    a[1]=1;
    while(not_finish)
    {  	  		  		 
        while(not_finish&&i<=NUM)
            if(a[i]>=C_NUM)
                if(i==1&&a[i]==C_NUM)
                    not_finish=0;
                else a[i--]=0;
            else a[i++]++;
        if(not_finish)
        {  	  		  		 
            long int sum1,sum2,sum3,sum4;
            sum1=b[a[1]]*100+b[a[2]]*10+b[a[3]];
            sum2=sum1*b[a[5]];
            sum3=sum1*b[a[4]];
            if(sum2>=2222&&sum2<=7777&&f(sum2)&&sum3>=2222&&sum3<=7777&&f(sum3))
                if((sum4=sum2+sum3*10)>=22222&&sum4<=77777&&f(sum4))
                {  	  		  		 
                    printf("  %d\n",sum1);
                    printf("*  %d%d\n",b[a[4]],b[a[5]]);
                    printf("-----\n");
                    printf(" %d\n",sum2);
                    printf("%d\n",sum3);
                    printf("-----\n");
                    printf("%d\n",sum4);
                }
             i=NUM;
        }
    }
}  	  		  		 

f(sum)
long sum;
{   int i,k,flag;
    while(sum>0)
    {  	  		  		 
        i=sum%10;
        for(flag=0,k=1;!flag&&k<=C_NUM;k++)
        if(b[k]==i)
        {  	  		  		 
            flag=1;
            break;
        }
        if(!flag)   return(0);
        else      sum=sum/10;
    }
    return (1);
}

 封面:PixivID:Roh;

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值