10.4 a.m.小结

2023-11-11

T1:问题 A: Prime Distance

题目描述

给定两个整数 L,R,求闭区间 [L,R] 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。

输入

多组数据。每行两个数 L,R。

输出

详见输出样例。

样例输入

2 17
14 17

样例输出

2,3 are closest, 7,11 are most distant.
There are no adjacent primes.

提示

【数据范围与提示】

对于全部数据,1≤L<R<2^{31} ,R−L≤10^6

题解:

由于数据保证在int范围,因此首先找质数,范围只用到10^5就行。然后用一个数组来存这个数是否是质数。注意,数组开不到那么大,所以只用记录编号即可。然后不要对于每一个数去搜能否被质数整除,直接找这些质数的大的倍数,然后标记为合数,最后剩下的一定是大质数。然后直接找质数的距离,最后输出答案就可以了。(暴力出奇迹!!)

参考代码:

#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
using namespace std;
LL prime[271000],cnt=0,mf[271000],l,r,f[1271000];
bool check(LL k)
{
	LL ph=1,st=sqrt(k);
	for(int j=1;j<=cnt&&prime[j]<=st;j++)
	{
		if(k%prime[j]==0)
		{
			ph=0;break;
		}
	}
	return ph;
}
int main()
{
	register LL i;
	for(i=2;i<=100005;i++)
	{
		if(!mf[i])
		{
			mf[i]=i;
			prime[++cnt]=i;
		}
		for(LL j=1;j<=cnt&&i*prime[j]<100005;j++)
		{
			mf[i*prime[j]]=prime[j];
			if(mf[i*prime[j]]==mf[i]) break;
		}
	}
	while(scanf("%lld%lld",&l,&r)!=EOF)
	{
		LL mins=999999999ll,maxs=0,pd=0,st=0;
		LL min_l,min_r,max_l,max_r,pre=0;
		if(l==1) l++;
		memset(f,0,sizeof(f));
		for(i=1;i<=cnt;i++)
		{
			int a=(l-1)/prime[i]+1;
			int b=r/prime[i];
			for(LL j=a;j<=b;j++)
			{
				if(j<=1) continue;
				f[j*prime[i]-l]=1;
			}
 		}
		for(i=l;i<=r;i++)
		{
			if(f[i-l]) continue;
			if(pre==0) pre=i;
			else
			{
				if(i-pre<mins)
				{
					mins=i-pre;
					min_l=pre;
					min_r=i;				
				}			
				if(i-pre>maxs)
				{
					maxs=i-pre;
					max_l=pre;
					max_r=i;
				}	
			}	
			pre=i;
		}
		if(mins!=999999999&&maxs!=0)
		printf("%d,%d are closest, %d,%d are most distant.\n",min_l,min_r,max_l,max_r);
		else printf("There are no adjacent primes.\n");
	}
	return 0;
}

T2:问题 F: 方程的解

题目描述

佳佳碰到了一个难题,请你来帮忙解决。对于不定方程 a1 +a2 +⋯+ak−1 +ak =g(x),其中 k≥2 且 k∈N∗ ,x 是正整数,g(x)=xx mod 1000(即 xx  除以 1000 的余数),x,k 是给定的数。我们要求的是这个不定方程的正整数解组数。

举例来说,当 k=3,x=2 时,方程的解分别为:

输入

有且只有一行,为用空格隔开的两个正整数,依次为 k,x。

输出

有且只有一行,为方程的正整数解组数。

样例输入

3 2

样例输出

3

提示

【数据范围与提示】

对于 40% 数据,答案不超过 10^{16} ;

对于全部数据,1≤k≤100,1≤x<2^{31} ,k≤g(x)。

题解: 

        显而易见,这道题要打高精。关键是用不用“高(mo)精(gui)除”。首先用一个快速幂解决x^x对1000取模。然后用放挡板(数学排列组合基础知识)的思想,相当于在x'个物品的空中放k-1个隔板,把物品分割成k份(也就是k个解)。因此就是C_{x'-1}^{k-1}。因此问题就转化成求一个组合数的值。

        是否是一定要打高精除?根据定义,可以把乘积式写出来,然后用数组记录“每一项”。由于最后的答案一定是整数,因此分数线上面的元素与下面的元素一定可以完全约分,把下面的元素全部转化成1.所以直接O(n^2)暴力枚举,对于每一个分母上的数,一定能找到分子上的一些数把它约掉。最后用一个高精乘就可以解决本题。

参考代码:

#include<cstdio>
using namespace std;
int k,a[1001],b,x,st=0,tot=1;
struct node
{
	long long s[2000];
};
node ret;
node change(int k)
{
	node pt;
	int len=0,k1=k;
	while(k1)
	{
		len++;
		k1/=10ll;
	}
	pt.s[0]=len;
	for(int i=1;i<=len;i++)
	{
		pt.s[i]=k%10ll;
		k/=10ll;
	}
	return pt;
}
node multiple(node p,node q)
{
	node ht;
	ht.s[0]=p.s[0]+q.s[0]+50ll;
	for(int i=1;i<=ht.s[0];i++) ht.s[i]=0;
	for(int i=1;i<=p.s[0];i++)
	{
		for(int j=1;j<=q.s[0];j++)
		{
			ht.s[i+j-1]+=p.s[i]*q.s[j];
			ht.s[i+j]+=ht.s[i+j-1]/10ll;
			ht.s[i+j-1]%=10ll;
		}
	}
	for(int i=1;i<=ht.s[0];i++)
	{
		ht.s[i+1]+=ht.s[i]/10ll;
		ht.s[i]%=10ll;
	}
	while(ht.s[ht.s[0]]==0) ht.s[0]--;
	return ht;
}
int gcd(int a,int b)
{ return b==0?a:gcd(b,a%b); }
int qpow(int x,int y,int p)
{
	int ret=1;
	while(y)
	{
		if(y&1) ret=(ret*x)%p;
		x=x*x%p;
		y/=2; 
	}
	return ret;
}
int main()
{
	ret=change(1);
	scanf("%d%d",&k,&x);
	x=qpow(x%1000,x,1000);
	if(x<k) 
	{
		printf("0\n");
		return 0;
	}
	for(int i=1;i<=k-1;i++)
	a[i]=i;
	for(int i=x-1;i>=x-(k-1);i--)
	{
		b=i;
		for(int j=tot;j<=k-1;j++)
		{
			if(b==1) break;
			if(a[j]==1) continue;
			int gds=gcd(b,a[j]);
			if(gds==1) continue;
			b/=gds;a[j]/=gds;
		}
		while(a[tot]==1) tot++;
		node rs,ts;
		rs=change(b);
		ts=multiple(ret,rs);
		ret=ts;	
	}
	for(int i=ret.s[0];i>=1;i--)
	printf("%lld",ret.s[i]);
	printf("\n");
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10.4 a.m.小结 的相关文章

  • Python中MNE库的EEG数据(PCA和ICA)预处理

    PCA ICA是脑电数据预处理的一个步骤 一般放在带通滤波处理之后 个人理解PCA和ICA的作用基本一致 用于去除心电和眼电的影响 不过PCA是提取主要成分 相当于降维提取特征 ICA是分离独立成分 目前PCA和白化已经是ICA的标准化的预
  • Javascript输出

    js输出 严格来说 JavaScript 没有任何打印或者输出的函数 以下几种方式都只不过是一种数据展示的方法 第一种 弹出对话框 对话框有三种 Window alert Window confirm Window promt 通常省略Wi
  • 这个拒绝内卷的AI狼火了!高智商却自暴自弃,不想抓羊只想躺

    新智元报道 来源 B站等 编辑 Yaxin 新智元导读 近日 一个狼吃羊的AI火了 在一个狼吃羊的AI智障游戏中 狼发现自己吃不到羊 直接选择了 自杀 然而 狼选择撞石的原因竟是 自杀分数高 智障AI狼最近火了 在一个狼吃羊的AI游戏中 狼
  • 关于oauth2中为什么不直接返回token而是传授权码code

    1 客户端会暴露 token授权服务器是会根据客户端传来的 redirect url 返回给客户端 3xx 重定向状态码 然后客户端再把授权码 code 传给客户端服务器 首先前端 网页有源代码 手机app反编译 的都是不安全的 直接将 t

随机推荐

  • 在html中调用ActiveX控件

    刚做完一个控件 要求嵌入在C S结构的网页中 我 在HTML中嵌入vbscript脚本来调用控件中的方法和属性的 为啦以后做个参考 把它的源码给写下来 也希望能给一些同僚们做一个参考 我的控件接口是 FpGather 在html中的调用 h
  • 如何申请OPenai密钥

    你可以在 OpenAI 的网站上申请密钥 首先 你需要去到 OpenAI 的网站并注册一个账号 然后 登录到你的账号 在账号设置页面申请密钥 你可能需要填写一些信息 并描述你对 OpenAI API 的计划 如果你想使用某些特定的 Open
  • 1.4-从“把大象装进冰箱拢共分几步”来理解面向对象编程思想

    一 定义 面向过程 概念 面向过程是一种以过程为中心的编程思想 它是一种基础的顺序的思维方式 面向对象方法的基础实现中也包含面向过程思想 特性 模块化 流程化 优点 性能比面向对象高 因为类调用时需要实例化 开销比较大 比较消耗资源 比如单
  • QTCreator的使用

    用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能 pro文件是供qmake使用的文件 不是本文的重点 不过其实也很简单的 在此不多赘述 所以呢 还是从main开始 view plain cop
  • 汉字转换为拼音的JavaScript库

    将JSPinyin剥离mootools这个JavaScript库 可以独立使用 1 一个是将汉字翻译为拼音 其中每一个字的首字母大写 pinyin getFullChars this value 2 一个是可以将每一个字的拼音的首字母提取出
  • MobaXterm学习与使用

    转载地址 MobaXterm学习与使用 首先要弄清几个概念 1 先来看看SSH是什么 定义如下 SSH是一种可以保证用户远程登录到系统的协议 实际上 SSH是一个网络协议 允许通过网络连接到Linux和Unix服务器 SSH使用公钥加密来认
  • 给定一个字符串求出最长重复子串

    主要是使用到了二分的思想 知道字符串就是知道了它的长度 然后可知len max s length 2 然后暴力枚举就可以得出答案 代码如下 include
  • python爬虫 模拟登录_Python爬虫(8):模拟登录方法汇总

    对于很多要先登录的网站来说 模拟登录往往是爬虫的第一道坎 本文介绍 POST 请求登录 获取 Cookies 登录 Seleium 模拟登录三种方法 摘要 在进行爬虫时 除了常见的不用登录就能爬取的网站 还有一类需要先登录的网站 比如豆瓣
  • 破解Photoshop cs6

    怎样安装和破解Photoshop CS6 浏览 152148 更新 2012 10 18 23 46 标签 photoshop 1 2 3 4 5 6 7 分步阅读
  • union struct的内存分配方式及其sizeof大小

    经验 1 int main union zcl double i char k 15 char c struct date int cat 元类型4 zcl cow 元类型8 zcl里面的i double类型 struct dat char
  • 有各组方差怎么算组间平方和_讲讲统计科学里的方差分析

    上一篇讲了假设检验 这一篇讲讲方差分析 1 背景 假如你们现在针对用户提出了三种提高客单价的策略A B C 现在想看一下这三种策略最后对提高客单价的效果有什么不同 那我们怎么才能知道这三种策略效果有什么不同 最简单的方法就是做一个实验 我们
  • react 通过生命周期优化组件性能

    已经对React生命周期有了认识 那如何利用它提高组件的性能那 通过shouldComponentUpdate函数 改善React组件性能的例子 小姐姐组件存在性能问题 是的 小姐姐组件已经写的很熟悉了 但是它有一个性能问题 那就是子组件X
  • MySQL5.6主从复制的配置(CentOS-6.6+MySQL-5.6)(二)

    原文地址 http my oschina net wushuicheng blog 652680 MySQL5 6主从复制的配置 CentOS 6 6 MySQL 5 6 作者 吴水成 出自 龙果学院 基于Dubbo的分布式系统架构视频教程
  • Flume 报出异常org/apache/hadoop/io/SequenceFile$CompressionType

    异常 Failed to start agent because dependencies were not found in classpath Error follows java lang NoClassDefFoundError o
  • sse指令

    mm add ss mm add ps
  • HBase数据模型、RowKey、Column Family(列族)和qualifier(列)、Timestamp时间戳、Cell单元格、读写流程、HLog(WAL log)...

    目录 HBase数据模型 RowKey Column Family 列族 和qualifier 列 Timestamp时间戳 Cell单元格 读写流程 HLog WAL log HBase数据模型 HRegion是HBase中分布式存储和负
  • ADB调试--详细教程(附华为手机无法显示设备解决方法)

    终端打开开发者模式 用数据线连接电脑 然后按照下面的步骤操作 1 开启开发者选项 设置 gt 关于设备 gt 版本号 连续点击5次 2 打开USB调试 在开发者选项中 找到USB调试 将此打开 3 cmd进入命令行 进入含有adb exe的
  • zabbix 5系列之snmp监控详解

    更多精彩Zabbix文章 技术交流 免费技术培训加微号NateIT 免费获取zabbix安装 配置 优化技术培训视频 官网 http ywzs hanyunintel com 首先 谢谢原作者 此文为转载的文章 现将原地址贴出如下zabbi
  • 服务器查看不到集群信息,查看服务器集群资源

    查看服务器集群资源 内容精选 换一换 区块链服务状态为 异常 排查项一 区块链依赖的集群 服务器 存储等资源是否正常 排查项二 云服务器节点资源规格不足 排查项一 区块链依赖的集群 服务器 存储等资源是否正常 CCE集群状态排查 登录CCE
  • 10.4 a.m.小结

    T1 问题 A Prime Distance 题目描述 给定两个整数 L R 求闭区间 L R 中相邻两个质数差值最小的数对与差值最大的数对 当存在多个时 输出靠前的素数对 输入 多组数据 每行两个数 L R 输出 详见输出样例 样例输入