poj2635

POJ2635尴尬的密码学家测试数据解析与算法实战 定义:若整数 $ a $ 和 $ b $ 对于模 $ m $ 有相同的余数,则称 $ a $ 与 $ b $ 对模 $ m $ 同余,记作:运算规则:运算类型规则表达式加法若 $ a \equiv b \pmod{m} $,$ c \equiv d \pmod{m} $,则 $ a + c \equiv b + d \pmod{m} $减法同理可得 $ a - c \equiv b - d \pmod{m} $乘法幂运算。 阅读详情

大致题意:

给定一个大数K,K是两个大素数的乘积的值。

再给定一个int内的数L

问这两个大素数中最小的一个是否小于L,如果小于则输出这个素数。


高精度求模+同余模定理

 

1、  Char格式读入K。把K转成千进制Kt,同时变为int型。

把数字往大进制转换能够加快运算效率。若用十进制则耗费很多时间,会TLE。

千进制的性质与十进制相似。

例如,把K=1234567890转成千进制,就变成了:Kt=[  1][234][567][890]。

为了方便处理,我的程序是按“局部有序,全局倒序”模式存放Kt

即Kt=[890][567][234][1  ]  (一个中括号代表一个数组元素)

2、  素数打表,把10^6内的素数全部预打表,在求模时则枚举到小于L为止。

注意打表不能只打到100W,要保证素数表中最大的素数必须大于10^6,否则当L=100W且K为GOOD时,会因为数组越界而RE,这是因为越界后prime都是负无穷的数,枚举的while(prime[pMin]<L)循环会陷入死循环

3、  高精度求模。

主要利用Kt数组和同余模定理。

例如要验证123是否被3整除,只需求模124%3

但当123是一个大数时,就不能直接求,只能通过同余模定理对大数“分块”间接求模

具体做法是:

先求1%3 = 1

再求(1*10+2)%3 = 0

再求 (0*10+4)% 3 = 1

那么就间接得到124%3=1,这是显然正确的

而且不难发现, (1*10+2)*10+4 = 124

这是在10进制下的做法,千进制也同理,*10改为*1000就可以了

#include<cstdio>
#include<cstring>
using namespace std;
#define M 1001100
char s[110];
int n[M],N,l,ans,pn;
int p[M];
bool is_p[M];

void prime()  //素数打表
{
	memset(is_p,0,sizeof(is_p));
	int i,j;
	pn=0;
	for(i=2;i<M;i++)
	{
		if(!is_p[i])
		{
			p[pn++]=i;
			for(j=i+i;j<M;j+=i)
			{
				is_p[j]=true;
			}
		}
	}
}

void init()  //转为千进制
{
	N=0;
	int len=strlen(s)-1;
	while(len>=0)
	{
		int t=3;
		int o=1;
		n[N]=0;
		while(t--&&len>=0)
		{
			n[N]=n[N]+o*(s[len--]-'0');
			o*=10;
		}
		N++;
	}
}

bool bigMode(int *ar,int len,int p)  //大数取模
{
	int ret=0;
	int i;
	for(i=N-1;i>=0;i--)
	{
		ret=(ret*1000+ar[i])%p;
	}
	if(ret==0)
	{
		return true;
	}
	return false;
}

void cal()
{
	init();
	int i;
	for(i=0;i<pn;i++)
	{
		if(p[i]<l)
		{
			if( bigMode(n,N,p[i]) )
			{
				ans=p[i];
				break;
			}
		}
		else
		{
			ans=p[i];
			break;
		}
	}
}

void answer()
{
	if(ans<l)
	{
		printf("BAD %d\n",ans);
	}
	else
	{
		printf("GOOD\n");
	}
}
int main()
{
	prime();
	while(~scanf("%s%d",s,&l))
	{
		if(l==0)
		{
			break;
		}
		cal();
		answer();
	}
	return 0;
}



一本集成电路静态时序设计经典之作(可下载) 本书全面深入探讨集成电路设计中关键技术的专著,涵盖了从基础知识到高级应用的各个方面。本书详细介绍了集成电路的发展历程、**静态时序分析的重要性、基本时序模型、时序信息库文件的构建、时序约束的设置、串扰噪声的影响及其控制方法**,并通过实战案例展示了如何进行有效的时序分析和优化。 阅读详情

相关推荐

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 850

ACM博客_kuangbin 人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃! by kuangbin 新博客:kuangbin.github.io POJ 3281 Dining(最大流

ACM博客_kuangbin 人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃! by kuangbin 新博客:kuangbin.github.io POJ 3281 Dining(最大流)

chen_zan_yu_的博客 1351

PICO+Unity MR空间网格开发实战:从零构建透视交互场景

本文详细介绍了使用PICO 4 Ultra与Unity引擎进行MR空间网格开发的完整实战流程。从环境准备、项目初始化、核心组件配置,到空间网格的生成、可视化与物理交互实现,手把手教你构建一个能识别真实环境并发射虚拟小球的透视交互场景。文章重点解析了PICO SDK中空间网格功能的关键配置与优化技巧,并提供了真机部署与调试的实用指南。

e3f4g5的博客 491

POJ——2635(数论)

题目链接:http://poj.org/problem?id=2635 可借鉴链接:http://blog.youkuaiyun.com/lyy289065406/article/details/6648530 源代码: #include using namespace std; int a[100005]; int flag[1001000]={0,0,0}; in

luoshenzhisi 498

M×N扫描序列图像拼接、大视场图像拼接、全景图像拼接、2D网格拼图方法、累计误差消除(显微图像/航拍图像等)

M×N序列图像完整拼接方法前言一、最朴实的一般方法二、广度优先搜索算法1.引入库2.读入数据整体路径优化算法 前言 1、网上有很多介绍图像两两拼接的算法,但是缺少对M×N张子图两两相对位置关系获得整体误差较小,肉眼下无明显错位的完整图像的算法实现。 2、由于拼接算法的不稳定可能会产生不同程度的误差,那么如何需要选择(搜索)误差较小拼接路径。 一、最朴实的一般方法 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、广度优先搜索算法 1.引入库 代码如下(示

qq_37764141的博客 5409

数仓建模:维度表合并时,如何处理可能出现的数据冲突?

通过以上方法,可以有效地处理维度表合并时可能出现的数据冲突,确保合并后的数据完整性、一致性和准确性,满足业务需求和数据仓库的性能要求。在合并过程中,需要根据实际情况选择合适的处理方法,并进行充分的测试和验证。(2)实战中总结的SQL技巧,帮助SQLBOY在SQL语言上有质的飞越,无论你应对业务难题及面试都会游刃有余【如果您觉得本文还不错,对你有帮助,那么不妨可以关注一下我的数字化建设实践之路专栏,这里的内容会更精彩。技巧总结,让你认识不一样的数仓。,数据库会抛出异常,可根据异常处理机制解决。

石榴姐yyds 1134

POJ 2635(同余定理)

题目链接:http://poj.org/problem?id=2635 首先介绍一下同余定理: 所谓的同余,顾名思义,就是许多的数被一个数d去除,有相同的余数。d数学上的称谓为模。如a=6,b=1,d=5,则我们说a和b是模d同余的。因为他们都有相同的余数1。    数学上的记法为:    a≡ b(mod d)    可以看出当n   (1) a和b是模d同余的.    (2) 存

To be excellent! 828

【数据分析八步法】将模糊需求转化为可验证的分析问题

国内访问Huggingface官方源常遇网络问题,可通过切换国内镜像提升下载速度。三种配置方式:1)设置HF_ENDPOINT环境变量;2)在from_pretrained中直接指定镜像参数;3)修改本地Huggingface配置文件。常用镜像包括hf-mirror.com、阿里云ModelScope和清华镜像源。注意镜像同步延迟、私有模型限制,建议配合huggingface-cli工具使用,必要时取消代理设置。合理配置镜像源可显著改善Huggingface生态使用体验。

Mr数据杨 859

POJ-1465(同余+高精度)

其实很简单的思想,外加贴一个模版 【题目描述】给一个数N 然后给M个一位数 问你是否有N的倍数 完全由这些一位数组成 先说算法 用BFS不停的扩展 就是X10这样的扩展 然后如果对N取余的余数没有出现过就把这个扩展得数的余数添加到队列里 如果余数是0的话就可以输出了  当然 扩展的时候要考虑到0,这些都不是最关键的 最关键的是这个数可能非常大 long long 不够 而高精的话比较麻烦

famousDT的专栏 599

脑电信号处理实战 01 | 从 0 跑通第一个 EEG 分析:加载、滤波、频谱与“睁眼闭眼“

本文以 UCI 公开数据集"EEG Eye State"为例,从零走通脑电处理的完整流水线——数据加载、1–40 Hz 带通滤波、Welch 功率谱、频带功率、通道相关性与箱线图质控、睁闭眼对比和时频分析,并用 8 张科研风格图层层揭示这份数据中的伪迹与通道重复问题,说明"流程跑得通不等于结果可信,质量控制永远先行"。

qq_53529450的博客 119

别再瞎改网络结构了!解决YOLO小目标检测痛点,我用这招把mAP提了15%

本文基于我7年工业PCB缺陷检测、无人机航拍、安防监控项目的一线落地经验,针对YOLO小目标检测最痛的「漏检率高、特征丢失、精度难提升」三大核心问题,拆解出。本文全程配套小目标特征丢失原理图、分块训练流程图、切图前后效果对比图、mAP提升柱状图、多方案性能对比表等可视化内容,从YOLO天生不擅长小目标的底层根源、方案核心原理、可直接复制的代码实现,到工业场景实测验证、新手必踩的10个坑位避坑指南,全链路讲透。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 388

poj 2635

题目大意:给你一个数,已经确定是两个素数的乘积.问你,两个素数中有没有一个数小于给定的L,如果有,就输出"BAD "+这个数.没有则输出"GOOD". 思路:1.首先由于给的数据很大.所以在判断上要用大数模的运算.将这个数以字符的形式存储.并将它转化成10w进制从个位开始.列如:123456789=[1234][56789]设选定的prime为e,将[1234]%e=r;判断([56789]

Simmu 515

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【POJ 2635】 The Embarrassed Cryptographer

【POJ 2635】 The Embarrassed Cryptographer 考查素数表就好好玩素数表……卡mod算啥= =TOT 总之 就是敲个表 暴力枚举取余 一发十进制取余(即*10+%TLE……) 看disscuss才知道mod多了影响很大 改成高进制取(既多累几位再取) 985ms 刚才强加了别人的打表代码 跳了1400ms.。。吓死宝宝了 看来学的这种打法挺实用

ACMer' 790

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

poj 2635 The Embarrassed Cryptographer(同余模运算)

http://poj.org/problem?id=2635 题意:给出一个大数K和一个数L,判断是否存在一个小于L的素数能够整除K,存在的话输出最小的那个素数 同余定理:1234%3可以分解为 1%3=1 (1*10+2)%3=0 (0*10+3)%3=0 (0*10+4)%3=1 则1234对3取余得1,大数亦如此,但是本题中需要将这个大数分为多个1000进制的数,10进

大太阳 589

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

poj 2635 The Embarrassed Cryptographer

线性筛+大整数取mod

我要吃熊猫 319

poj2635 The Embarrassed Cryptographer

题目链接:http://poj.org/problem?id=2635 首先说这道题的思路很简单: 1、素数打表,但是有一个细节,就是对打表后的数组最后的一个数要取一个大于1000000的数,因为在后面进行循环是否素数除尽使得判断条件是小于L,如果打表的数组最后一个数小于L,则循环一直进行下去,就导致了runtime error!!!我就是在这里错了好多次,而且自己检查了好多 遍也没有发现错误

生活总是要微笑着面对~ 697

POJ2635 The Embarrassed Cryptographer

题目链接:http://poj.org/problem?id=2635 题目描述

Saber 589

POJ2635-The Embarrassed Cryptographer 大数求余

题目链接:http://poj.org/problem?id=2635 题目分析:   http://blog.youkuaiyun.com/lyy289065406/article/details/6648530 转载于:https://www.cnblogs.com/xiaozhuyang/p/POJ2635-TheEmbarrassedCryptographer.html...

weixin_30840573的博客 98

POJ 2635 The Embarrassed Cryptographer 高精度

题目地址: http://poj.org/problem?id=2635题意:给出一个n和L,一直n一定可以分解成两个素数相乘。让你判断,如果这两个素数都大于等于L,则输出GOOD,否则输出最小的那个素数。从1到1000000的素数求出来,然后一个一个枚举到L,看能否被n整除,能的话就输出BAD+改素数都不行的话,说明两个素数都大于等于L,输出GOODAC代码:#include &lt;iostr...

lamborghini1993 1000

POJ--2635The Embarrassed Cryptographer(大数取模)

依据惯例,贴上题目链接http://poj.org/problem?id=2635这道题的大意是给你一个大数k,一个普通数字l,并且该大数可表示成两个质数的乘积,如果较小的那个质数小于l,则输出这个质数, 0 0时结束。这道题目我开始想采用大数分解来做,但是这样子做未免过于麻烦,根据题意,我们可以遍历2 —&gt;l,如果我们找到了一个数n,使得k % n = 0 成立,我们直接输出即可,若没有找...

萌新也要搞算法 309

(大数取模)POJ2635-The Embarrassed Cryptographer

poj2635题意:给一个大数K,int内的l,K是两个质数的乘积,问这两个质数是否小于有小于l的数;题解:先打质数的表,再按照大数取模依次对这些质数取模;大数取模:(点击打开链接)例如:如果1234是个大数,求对3取模的结果;                1 % 3 == 1(1*10 + 2)%3 == 0(0*10 + 3)%3 == 0(0*10 + 4)%3 == 1此题为千进制,原理...

whiskey_wei的博客 228

POJ 2635 The Embarrassed Cryptographer 高精度

题目地址: http://poj.org/problem?id=2635 题意:给出一个n和L,一直n一定可以分解成两个素数相乘。 让你判断,如果这两个素数都大于等于L,则输出GOOD,否则输出最小的那个素数。 从1到1000000的素数求出来,然后一个一个枚举到L,看能否被n整除,能的话就输出BAD+改素数 都不行的话,说明两个素数都大于等于L,输出GOOD AC代码...

weixin_33779515的博客 80

POJ 2635 The Embarrassed Cryptographer(千进制 高精度取模)

POJ 2635题目大意 给定一个K和L,K是由两个素数组成,如果这两个素数存在比L小(严格小于,因为这个原因WA了两次)的则输出最小的素数,都大于L输出“GOOD”(4≤K≤10100,2≤L≤106)​(4\le K\le 10^{100},2\le L\le 10^{6})​ 分析L比较小直接枚举L中的素数p,可以打表,然后高精度取模判断K是否是p的整数倍 大数求模可以用千进

AIDreamer 760
上一篇: POJ 2115 扩展欧几里得
下一篇: POJ 3292 删数
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值