蓝桥杯-连接乘积(算法提高)

简介: 蓝桥杯-连接乘积(算法提高)

题目描述:


算法提高  连接乘积  

时间限制:1.0s     内存限制:256.0MB

 

问题描述

 192这个数很厉害,用它分别乘以1、2、3,会得到:

 192  x  1  =  192

 192  x  2  =  384

 192  x  3  =  576

 把这三个乘积连起来,得到192384576,正好是一个1~9的全排列

 我们把上面的运算定义为连接乘积:

 m  x  (1  ...  n)  =  k(其中m  >   0  且  n  >   1,对于上例,m  =  192、n  =  3、k  =  192384576)

 即k是把m分别乘以1到n的乘积连接起来得到的,则称k为m和n的连接乘积。

 按字典序输出所有不同的连接乘积k,满足k是1~9的全排列

输出格式

 每个k占一行

样例输出

显然,结果中应包含一行:

192384576  


程序代码:  


#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
vector<string> ans;
string s[]={"0","1","2","3","4","5","6","7","8","9"};
string ToString(int n)
{
  string ans;
  while(n)
  {
    ans+=s[n%10];
    n/=10;
  }
  reverse(ans.begin(),ans.end());//逆转字符序列 
  return ans;
}
int check(string str)
{
  int vis[10];
  memset(vis,0,sizeof(vis));
  for(int i=0;i<str.size();i++)
    vis[str[i]-'0']++;//记录1到9出现的次数 
  if(vis[0]>0)//如果出现了0,就是不符合题意 
    return 0;
  for(int i=1;i<10;i++)
  {
    if(vis[i]!=1)//只要1到9有一个出现次数不为1 
      return 0;
  }
  return 1;//当且仅当1到9每个都只出现了1次 
}
int main()
{
  for(int i=1;i<9999;i++)
  {
    string str;
    for(int j=1;j<10;j++)
    {
      str=str+ToString(i*j);//C++字符串拼接 
      if(check(str))
      {
        ans.push_back(str);//将每个符合的串str添加到ans之后 
        break;
      }
    }
  }
  sort(ans.begin(),ans.end());//最后直接sort 
  for(int i=0;i<ans.size();i++)
    cout<<ans[i]<<endl;
  return 0;
}


相关文章
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
62 2
|
6月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-667 多位数连接
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-667 多位数连接
55 0
|
6月前
|
算法 Java Serverless
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-444 算法训练 求和问题
55 1
|
6月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-439 算法训练 简单字符变换
54 1
|
1月前
|
算法 测试技术 C++
【动态规划算法】蓝桥杯填充问题(C/C++)
【动态规划算法】蓝桥杯填充问题(C/C++)
|
3月前
|
自然语言处理 算法 数据挖掘
【数据挖掘】十大算法之PageRank连接分析算法
文章介绍了PageRank算法的基本概念和数学模型,包括如何通过一阶马尔科夫链定义随机游走模型以及如何计算网页的重要性评分,并提供了PageRank迭代算法的具体步骤。
66 0
|
29天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
50 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
5月前
|
存储 机器学习/深度学习 算法
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
第十五届蓝桥杯pb组国赛E题[马与象] (15分)BFS算法 详解
57 3
|
3月前
|
算法
【算法】前缀和——除自身以外数组的乘积
【算法】前缀和——除自身以外数组的乘积
|
3月前
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
36 0