题目

尴尬的密码员(crypto.cpp,128MB,1s)

【问题描述】:

年轻有为的密码员小 Y 已经成功为他现在的公司中一个拥有成千上万用户

的大系统设计了一套加密模块。这个加密模块的密码是由两个素数的乘积产生,
小 Y 确信这个密码很安全,因为还没有一种有效的方法对这样的乘积进行因数
分解。
然后小 Y 没有想到的是,密码的两个因数都应该是很大的,而不仅仅只要
它们的乘积大。现在可以认为某些用户的密码是弱密钥。为了不被解雇,小 Y
秘密地浏览所有用户的密码,检查它们是否足够强大,当然尤其要特别小心的检
查老板的密钥。

【输入文件】: 

输入包含不超过 20 组的测试数据,每行一个测试数据含有两个整数 K 和 L
(4 <= K <= 10^100、2 <= L <= 10^6),K 表示是由两个素数乘积得到的密码,L
是破解密码者最想要密码最小因数的范围,输入由 K=0 L=0 结束。

【输出文件】:

  对于每一个密码 K,如果它的最小一个因数 p<l< span="">,就输出”BAD p”;否则就

输出”GOOD”,每个测试数据输出一行。
【样例】

【输入输出样例】:

crypto.in
143 10
143 20
667 20
667 30
2573 30
2573 40
0 0
crypto.out
GOOD
BAD 11
GOOD
BAD 23
GOOD
BAD 31  

【数据规模】:

    如上

考试得分:  50

主要算法 :  质数(质因数分解,欧拉素数筛)

题干:

    将一个超大合数化为两个最小质数的乘积,求出其中最小的质数

应试策略:

  1.枚举2-L中的质数

  2.如果K/(枚举的数)为质数的话,输出答案

   代码

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define LL long long
#define FORa(i,s,e) for(LL i=s;i<=e;i++)
#define FORs(i,s,e) for(LL i=s;i>=e;i--)
#define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,10000,stdin),pa==pb)?EOF:*pa++
#define File(name) freopen(name".in","r",stdin),freopen(name".out","w",stdout)using namespace std;
static char buf[10000],*pa=buf,*pb=buf;
inline LL read();LL K,L;
bool Prime(int x)
{FORa(i,2,sqrt(x))if(x%i==0)return 0;return 1;
}
void Solve()
{FORa(i,2,L-1){if(Prime(i)&&Prime(K/i)&&K%i==0){printf("BAD %d\n",i);return; }}printf("GOOD\n");
}
int main()
{File("crypto");K=read(),L=read();while(K!=0&&L!=0){Solve();K=read(),L=read();}return 0;
}
inline LL read()
{register LL x(0);register LL f(1);register char c(gc);while(c<'0'||c>'9') f=c=='-'?-1:1,c=gc;while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=gc;return x*f;
}

非完美算法:  

    照搬应试策略

正解:

  1.欧拉素数筛,质数算术基本定理

  2.求出2-L内的最小的质数,运用高精看K是否可以整除这个质数,可以就是答案

  代码

 

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<cstring>
#define LL long long
#define FORa(i,s,e) for(LL i=s;i<=e;i++)
#define FORs(i,s,e) for(LL i=s;i>=e;i--)
#define File(name) freopen(name".in","r",stdin);freopen(name".out","w",stdout);const int N=1000000;
int cnt,prime[N+1],v[N+1];
string K;
LL L;
void Prime()
{FORa(i,2,L){if(!v[i]) v[i]=prime[++cnt]=i;FORa(j,1,cnt){if(prime[j]>j|prime[j]*i>L) break;v[prime[j]*i]=prime[j];}}
}
bool Check(int x)
{int f=1;while(1);
}
void Solve()
{FORa(i,1,cnt){if(Check(i)){printf("BAD %d\n",i);return; }}printf("GOOD\n");
}
int main()
{File("crypto");while(K!="0"&&L!=0){Prime(),Solve();cin>>K;scanf("%d",&L);}return 0;
}

总结:

  欧拉素数筛类板子

转载于:https://www.cnblogs.com/SeanOcean/p/11172687.html

2019.7.7 校内测试题 尴尬的密码员相关推荐

  1. 2019.7.9 校内测试题 史密斯数

    题目 史密斯数(smith.cpp,1s,128MB) [问题描述]: 美国有一位数字家名叫阿尔伯特·威兰斯基,他姐夫史密斯非常喜欢研究数学,所以两人经常在一起研讨各种数学问题.有时,两人碰不到一起, ...

  2. 2019.7.8 校内测试题 能量球

    题目 能量球(enb.cpp,1s,128MB) [问题描述]: sideman 有着一个你们所不知道的秘密.实际上,sideman 不是地球人,而 是遥远的 Gliese 行星的生物.sideman ...

  3. 2019.7.8 校内测试题 计数

    题目 计数(getCount.cpp,1s,128MB) [问题描述]: 对于一个整数 b,若存在整数 a 使 b=a*a,且 a>1,那末我们称 b 是"平方数": 对于一 ...

  4. 2019.7.8 校内测试题 连续数和

    题目 连续数和 (num.cpp,1s,128MB) [问题描述]: 一个正整数有可能可以被表示为 n(10^9>=n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5 ...

  5. 2019.7.9 校内测试题 数学问题

    题目 数学问题(math.cpp,1s,128MB) [问题描述]: 在一个渺无人烟的荒岛上待了 xx 年之后,小 Y 基本上啥都不会了.所以当小 Z 告诉他任何一个大于等于 4 的偶数都能表示成两个 ...

  6. 2019.6.18 校内测试 分析+题解

    话说校内怎么又考试了QwQ,哎考就考吧(随鸡硬便啦) 考试的三个题分别都再洛谷上: P1067 多项式输出  传送门 P1068 分数线划定  传送门 P1069 细胞分裂     传送门 呜呜呜~T ...

  7. 蓝桥杯java组多少分能拿奖_记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结

    引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...

  8. 长安大学转计算机专业,关于做好2019级本科生校内转专业工作的通知

    各学院(系).2019级学生: 根据<长安大学本科生转专业及专业分流管理办法>及本学期教学工作计划,现将2019级本科生转专业工作安排通知如下,请各单位按要求认真做好相关工作. 一.201 ...

  9. 2019/11/05 校内模拟

    CSP-S 模拟 T1 盘王节 这是一道模拟题,那些细节问题一定要想清楚再写. 那么有两种策略: 先把御符打完,再用剩下的兵符随便打. 一张御符都不打,直接用自己大的兵符打对方小的兵符,得到最大伤害. ...

最新文章

  1. 平行志愿遵循分数优先php,2015年黑龙江普通高校招生平行志愿“平行志愿”投档录取模式有哪些优点?...
  2. Django models部分,数据库建立,错误解决
  3. sed 格式化输出df -h
  4. oracle: 在sqlplus中,执行sql语句
  5. socket编程实例_NIO之网络编程源码阅读
  6. macos无法验证此app不包含恶意软件_macOS 平台的一款后门样本(TinyTim)的分析
  7. mfc activeX,mfc application,mfc dll三者的区别
  8. 【Caffe代码解析】SyncedMemory
  9. 常用视频格式简述(RMVB\RM\WMV\ASF\AVI\MPEG1\MPEG2\MPEG4\MOV)
  10. DEMATEL算法程序
  11. html实现宿舍管理系统,宿舍管理系统部分代码实现
  12. SNMP TRAP实战
  13. [渝粤题库]西北工业大学离散数学
  14. 从零开始学习CANoe(一)—— 新建工程
  15. 《沉默的真 相》的舆情分析及文本挖掘(二)——以原著小说,京东商品为例
  16. DS8880要将双控高端存储架构进行到底
  17. 桌面我的计算机图标,让桌面显示我的电脑或者我的计算机图标
  18. 基于STM32+华为云IOT设计的云平台监控系统
  19. Linux挖矿病毒查杀
  20. xshell 密钥身份验证_使用密钥斗篷和大使边缘堆栈进行集中式身份验证

热门文章

  1. java定义构造方法_构造方法的定义
  2. 51单片机如何跳出wile循环_信用卡还最低、以卡养卡、乱分期,这种“死循环”如何跳出?...
  3. 用python实现西绪福斯黑洞(即123数字黑洞)的演示
  4. 实例2·筛子直方图(pygal下的直方图绘制,svg格式的打开)
  5. [蓝桥杯 2022 省 B] 砍竹子
  6. Lingoes-一个很可爱的词典软件
  7. 金三银四——大数据/Java面试集锦
  8. 黑盒测试-正交试验法-Allpairs工具自动生成正交表
  9. 高中数学必修2;解析几何高考热点_逆袭高考
  10. 向量的点乘和叉乘区别及几何意义