思路:

首先先将每个输入的数据与n的最大公约数求出(因为如果a[i]是密码,那么所有a[i]与n最大公约数的倍数也是密码;于是如果a[i]不是密码,那么所有a[i]与n最大公约数的倍数也都不是密码)再从1到sqrt(a[k])(其实1到a[k]也行)找,最小且符合条件就是最小密码。

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
ll n,k;
ll a[];
ll num=;
ull ans;inline ll read()
{
ll x=;
bool f=;
char c=getchar();
for(; !isdigit(c); c=getchar()) if(c=='-') f=;
for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
if(f) return x;
return -x;
}
inline ll gcd(long long a,long long b)//求两个数最大公约数的函数
{
return b?gcd(b,a%b):a;
}
inline bool check(int x)
{
for(ll i=;i<=num-;i++)//-1:不包含密码与n的最大公约数
{
if(a[i]%x==)
{
return false;
}
}
return true;
}
int main()
{
n=read();k=read();
for(ll i=;i<=k;i++)
{
a[i]=read();
}
for(ll i=;i<=k;i++)
{
a[i]=gcd(a[i],n);//求a[i]与n的最大公约数
}
sort(a+,a+k);//排序(不排也可以,只不过时间更长)至于不是 sort(a+1,a+k+1)是因为密码不能与不是密码的数混在一起
for(ll i=;i<=k;i++)
{
if(a[i]!=a[i-])//去重
{
num++;
a[num]=a[i];
}
}
for(ll i=;i<=sqrt(a[k]);i++)//节约时间
{
if(a[k]%i==)//第一层筛选
{
if(check(i)==true)//既是最小又是符合题意的 ,一定是最优解
{
ans=n/i;
break;
}
else if(check(a[k]/i)==true)//符合条件但不一定是最小,算但不break
{
ans=n/a[k]*i;
}
}
}
cout<<ans;
return ;
}
请各位大佬斧正(反正我不认识斧正是什么意思)

最新文章

  1. python学习之路 第一天
  2. python中文编码问题
  3. android 调用电话功能
  4. ajax完整结构
  5. Android调试常用的工具简单介绍
  6. extjs 中动态给gridpanel 复选框赋值
  7. JS 获取浏览器和屏幕宽高等信息代码
  8. Simple Factory vs. Factory Method vs. Abstract Factory【简单工厂,工厂方法以及抽象工厂的比较】
  9. &ldquo;System.Exception: System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本&rdquo; 的解决方案
  10. 解决TableView / ScrollView上的Menu问题(1滑出View区域还可点击2导致点击menu后View不能滑动)
  11. LeetCode 572. Subtree of Another Tree (是否是另一个树的子树)
  12. SQLite Update 语句(http://www.w3cschool.cc/sqlite/sqlite-update.html)
  13. log日志文件
  14. Exp3 免杀原理与实践_05齐帅
  15. UVa 10905 - Children&#39;s Game 排序,题目没有说输入是int 难度: 0
  16. JVM 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析
  17. (转载)C# GDI+ 画简单的图形:直线、矩形、扇形等
  18. 【C#】非常重要的泛型
  19. Qt: QAction在QToolBar中快捷键行为注意事项
  20. [转载]Frontend Knowledge Structure

热门文章

  1. Forbidden (CSRF token missing or incorrect.):
  2. day52——jquery引入与下载、标签查找、操作标签
  3. 深度学习-CNN+RNN笔记
  4. python_socket (套接字)
  5. NFS实现多服务器文件共享
  6. nginx+lua+storm的热点缓存的流量分发策略自动降级
  7. java之 代理设计模式
  8. nginx.conf配置demo
  9. Java自学-控制流程 switch
  10. leetcode 学习心得 (3)