完全平方数问题

news/2024/7/20 20:04:49 标签: c++, 数据结构, 深度优先, 算法

说明

用0至9这10个数字组成一位数、两位数、三位数、四位数各一个,使它们都是非零的完全平方数.例如1,36,784,9025就是满足条件的一种分法

输出格式

输出有多少种方案

题解

我们可以自己造出完全平方数,怎么造呢?例如3,用它自己乘它自己,就是9,就造出来一个完全平方数了(优势:可以省时间复杂度)。

然后我们就可以分类讨论四种情况:

step 1:一位数

一位数的范围是0~9,注意题目说“它们都是非零的完全平方数”,所以我们枚举时就只要枚举1~3就行了(0*0=0)。

step 2:两位数

两位数的范围是10~99,只要枚举4~9就行了。

step 3:三位数

三位数的范围是100~999,只要枚举10~31就行。

step 4:四位数

四位数的范围是1000~9999,只要枚举32~99。

枚举完之后,我们依次将这四个数乘它自己,就得到四个完全平方数,将四个完全平方数数位拆分后判断是不是都是0~9这几个不重复的数字组成的,如果是,就ans++

————————————————

版权声明:上文有CSDN博主「zealous_zzx」的原创文章改编而来,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/MLJYHP/article/details/128678787


代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int vis[10001],ans;
void f(int x)
{
  while(x)
  {
    vis[x % 10]++;
    x /= 10;
  }
}
signed main()
{
  for(int i = 1; i <= 3; i++)
    for(int j = 4; j <= 9; j++)
      for(int k = 10; k <= 31; k++)
        for(int l = 32; l <= 99; l++)
        {
          bool fl = 1;
          int a = i * i,b = j * j,c = k * k,d = l * l;
          f(a);
          f(b);
          f(c);
          f(d);
          for(int p = 0; p <= 9; p++)
          {
            if(vis[p] == 0)
            {
              fl = 0;
              break;
            }
          }
          if(fl == 1) ans++;
          memset(vis,0,sizeof(vis));
        }
  cout<<ans;
  return 0;
}


http://www.niftyadmin.cn/n/27420.html

相关文章

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (八)使用generate…for语句简化代码

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 &#xff08;八&#xff09;使用generate…for语句简化代码 &#x1f508;声明&#xff1a; &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN博客 &#x1f9e8;未经作者允许&#xff0c;禁止转载 &#x1f511;系列专栏&am…

5个关键词回顾2022年个推技术实践

作为一家数据智能服务商&#xff0c;2022年每日互动&#xff08;个推&#xff09;在为开发者和行业客户提供优质服务的同时&#xff0c;不断砥砺创新&#xff0c;追逐技术前沿。个推还持续参与开发者生态建设&#xff0c;积极总结、分享自身技术实战经验&#xff0c;面向行业输…

基于AD Event日志监测AdminSDHolder

01、简介 AdminSDHolder是一个特殊的AD容器&#xff0c;通常作为某些特权组成员的对象的安全模板。Active Directory将采用AdminSDHolder对象的ACL并定期将其应用于所有受保护的AD账户和组&#xff0c;以防止意外和无意的修改并确保对这些对象的访问是安全的。如果攻击者能完全…

uniapp实现界面可任意拖动小图标

uniapp实现界面可任意拖动小图标一、问题&#xff1a;二、解决步骤2.1 根据uni-app官方提供的案例&#xff0c;创建组件2.2 在需要的界面引入组件使用额外注意一、问题&#xff1a; 例如购物车小图标可任意拖动 二、解决步骤 2.1 根据uni-app官方提供的案例&#xff0c;创建…

make_blobs函数

示例1&#xff1a; # make_blobs示例 from sklearn.datasets.samples_generator import make_blobsX, y make_blobs(n_samples10, centers3, n_features2,random_state0) #看看数据集长什么样 plt.scatter(X[:, 0], X[:, 1], cy, cmap"rainbow");示例2&#xff1a;…

Enterprise JavaBean 简介

Enterprise JavaBean 简介 在顶层我们使用的框架是面向服务的&#xff0c;而在其之下的开发方法面向组件&#xff0c;最基层的便是面向对象面向过程的JAVA编程。 面向过程和面向对象是两种具体程序设计时的编程范式&#xff0c;他们没有本质区别&#xff0c;只是使用不同的方…

1-货物摆放

题目描述小蓝有一个超大的仓库&#xff0c;可以摆放很多货物。现在&#xff0c;小蓝有 nn 箱货物要摆放在仓库&#xff0c;每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向&#xff0c;每箱货物的边都必须严格平行于长、宽、高。小蓝希望所有的货物最终摆成…

Barra模型因子的构建及应用系列二之Beta因子

一、摘要 在前期的Barra模型系列文章中&#xff0c;我们初步讲解并构建了Size因子。在Size因子基础上构建的单因子策略也获得了不错的绝对收益。而本期内容&#xff0c;我们在该系列下进一步构建Beta因子&#xff0c;其中基于Beta因子构建的策略在2022年实现了5.70%年化收益&a…