2014年蓝桥杯c/c++ c组 神奇算式

简介: 2014年蓝桥杯c/c++ c组 神奇算式

标题:神奇算式 (枚举+检查+字符串比较)


由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:

210 x 6 = 1260

8 x 473 = 3784

27 x 81 = 2187


都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。


代码:


#include <iostream>
using namespace std;
#include <sstream>
#include <algorithm>  //算法头文件 本题用于sort
int ans = 0;
bool check(int rand,int sum)  //将两个int型转化为string型,然后排序进行比对 
{ 
  string ss_rand,ss_sum;
  stringstream ss;
  //cout<<rand<<" "<<sum<<endl;
  ss<<rand;
  ss>>ss_rand; //转rand
  stringstream ss1;
  ss1<<sum;
  ss1>>ss_sum;  //转sum
  sort(ss_rand.begin(),ss_rand.end());
  sort(ss_sum.begin(),ss_sum.end()); 
  //cout<<ss_rand<<"  "<<ss_sum<<endl;
  if(ss_rand == ss_sum){
  cout<<rand<<" "<<sum<<endl;
  ans++;  //相同加1 
  return true; 
  }
  else
  return false;
}
int main()
{
  int r1,r2,r3;
  for(int i=1;i<10;i++){
  for(int j=0;j<9;j++){
    if(i!=j)
    for(int k=0;k<10;k++)
      if(i!=k&&j!=k)
      for(int p=0;p<10;p++)
        if(i!=p&&j!=p&&k!=p){  //不与之前相同的条件 
        int sum = i*1000+j*100+k*10+p;  //一种求和 
        if(p!=0){
          r1 = (i*100+j*10+k)*p;
          if(check(r1,sum)) cout<<"r1:"<<i*100+j*10+k<<"*"<<p<<"="<<sum<<endl<<endl;
        }
        if(j!=0){
          r2 = i*(j*100+k*10+p);
          if(check(r2,sum)) cout<<"r2:"<<i<<"*"<<j*100+k*10+p<<"="<<sum<<endl<<endl;
        }
        if(k!=0){
          r3 = (i*10+j)*(k*10+p);
          //只有二位*二位才会有乘法交换律,应当保持前面小于后面也是一个条件 
          if(check(r3,sum)&&((i*10+j)<(k*10+p))) cout<<"r3:"<<i*10+j<<"*"<<k*10+p<<"="<<sum<<endl<<endl;  
        } 
        }
  }
  }
  cout<<ans<<endl;
  return 0;
}


/*

注意点:

1.四个数互不相同

2.同时三条式子中,两个乘数中不能有一个乘数为0

3.注意乘法交换律对于二位数乘二位数要加一个条件

*/


相关文章
|
1月前
|
算法 测试技术 C++
【动态规划算法】蓝桥杯填充问题(C/C++)
【动态规划算法】蓝桥杯填充问题(C/C++)
|
1月前
|
人工智能 算法 BI
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
|
1月前
|
人工智能 C++
第十四届蓝桥杯省赛大学B组(C/C++)整数删除
第十四届蓝桥杯省赛大学B组(C/C++)整数删除
|
1月前
|
机器学习/深度学习 算法 关系型数据库
第十五届蓝桥杯C++B组省赛
第十五届蓝桥杯C++B组省赛
82 14
|
1月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
37 5
|
6月前
|
算法 测试技术 C++
小唐开始刷蓝桥(八)2013年第四届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(八)2013年第四届C/C++ B组蓝桥杯省赛真题
|
6月前
|
算法 C++ 数据格式
小唐开始刷蓝桥(七)2014年第五届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(七)2014年第五届C/C++ B组蓝桥杯省赛真题
|
6月前
|
算法 C++
小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
|
6月前
|
算法 C++
小唐开始刷蓝桥(六)2015年第六届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(六)2015年第六届C/C++ B组蓝桥杯省赛真题
|
6月前
|
数据安全/隐私保护 C++
小唐开始刷蓝桥(九)2012年第三届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(九)2012年第三届C/C++ B组蓝桥杯省赛真题