1-9组成的等式

// p1230.cpp : Defines the entry point for the console application.
/*
题目
用1-9这9个数,组成一个等式,
乘数3位数,被乘数2位数,结果为4位数
*/
//

#include "stdafx.h"
#include "stdlib.h"
#include "iostream.h"
#include "string.h"

//返回长度
int getlen(int a)
{
 int r;
 char s[10];

 itoa(a,s,10);
 r = strlen(s);
 return r;
}

//组合
char* getstr(int a,int b,int c)
{
 char s1[10];
 char s2[10];
 char s3[10];
 
 char *r;

 itoa(a,s1,10);
 itoa(b,s2,10);
 itoa(c,s3,10);
 r = new char[30];
 r[0]='/0';
 strcat(r,s1);
 strcat(r,s2);
 strcat(r,s3);
 return r;
}

//获取数a的右起第k位
int getnum(int a,int k)
{
 int r,l;
 char s[10];

 itoa(a,s,10);
 l = strlen(s);
 if (k>l)
 {
  r=-1;
 }
 else
 {
  r = s[l-k] - '0';
 }

 return r;
}

//是否重复
bool isre(int a)
{
 char s[10];
 int arr[10];
 int i,j;
 
 //初始化
 for (i=0;i<10;i++){arr[i]=0;}

 //三个数连成一个字串
 itoa(a,s,10);

 for (i=0;i<(signed int)strlen(s);i++)
 {
  j=s[i]-'0';
  if (j== 0){return false;}
  if (arr[j]==1){return false;}
  if (arr[j]==0){arr[j]++;}
 }

 return true;
}


//判断是否由1-9组成
bool isok(int a,int b,int c)
{
 char *s;
 int arr[10];
 int i,j;
 
 //初始化
 for (i=0;i<10;i++){arr[i]=0;}

 //三个数连成一个字串
 s=getstr(a,b,c);

 for (i=0;i<(signed int)strlen(s);i++)
 {
  j=s[i]-'0';
  if (j== 0){return false;}
  if (arr[j]==1){return false;}
  if (arr[j]==0){arr[j]++;}
 }

 return true;
}

//输出结果
void out(int a, int b, int c)
{
 cout << a << " X " << b << " = " << c <<endl;
}

int main()
{
 int i,j,k;

 for (i=11;i<=99;i++)
 {
  if (isre(i))
  {
   for (j=111;j<=999;j++)
   {
    if (isre(j))
    {
     k=i*j;
     if (isok(i,j,k)){out(i,j,k);}
    }
   }
  }
 }
 return 0;
}

结果:

138 X 42 = 5796
157 X 28 = 4396
159 X 48 = 7632
186 X 39 = 7254
198 X 27 = 5346
297 X 18 = 5346
483 X 12 = 5796

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值