第四轮easy~hard

news/2025/2/11 23:19:07/文章来源:https://www.cnblogs.com/tolskar/p/18707395

题目1

代码

#include<bits/stdc++.h>#define endl '\n'using namespace std;#define int long longint power(int a,int b,int p)
{int tar=1;while(b){if(b&1)tar=(tar*a)%p;a=(1ll*a*a)%p;b>>=1;}return tar;
}int read(int p)
{int tar=0;string s;cin>>s;for(int i=0; i<s.size(); i++)tar=(tar*10+s[i]-'0')%p;return tar;
}const int p=19260817;
int a,b;
signed main()
{// freopen("test.in","r",stdin);// freopen("test.out","w",stdout);/* Code */a=read(p);b=read(p);if(b==0)cout<<"Angry!"<<endl;elsecout<<(a*power(b,p-2,p))%p<<endl;// fclose(stdin);// fclose(stdout);return 0;
}

解题思路

该代码实现了一个模意义下的快速幂运算,以及一个模意义下的整数读取函数。
power 函数使用了快速幂算法,通过不断平方和取模来高效地计算 a 的 b 次幂对 p 取模的结果。
read 函数用于读取一个字符串表示的整数,并将其对 p 取模。
在 main 函数中,首先读取两个整数 a 和 b,然后判断 b 是否为 0,如果是,则输出 "Angry!",否则计算 a 乘以 b 的逆元(即 b 模 p 的乘法逆元),并输出结果。

题目2

代码

#include<cstdio>
int t,l,r;
int main(){scanf("%d",&t);while(t--){scanf("%d%d",&l,&r);if(r==1&&l==1)puts("1");else printf("%d\n",r-l);}
} 

解题思路

该代码的目的是计算从 l 到 r 范围内所有整数的差的绝对值,除了 l 和 r 都为 1 的情况。
在 main 函数中,首先读取整数 t,表示测试用例的数量。然后使用一个循环来处理每个测试用例。

对于每个测试用例,读取 l 和 r,并检查是否 l 和 r 都为 1。如果是,则输出 1,否则输出 r-l。

题目3

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;int primes[N];//存储所有素数 
bool vis[N],a[N];//vis存储i是否被筛掉 
//数组a记录偏移后的数据是不是合数,1:合数;0:质数。a[i]表示l+i是不是合数, 有一个偏移量l
ll l,r; 
int cnt; void get_primes()
{cnt = 0;for(int i = 2; i <= 50000; i++){if(!vis[i]) primes[cnt++] = i;for(int j = 0; primes[j] <= 50000 / i; j++){vis[primes[j] * i] = true;if(i % primes[j] == 0) break;}}
}ll read()
{ll s=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}return s*f;
}int main() {l = read(),r = read();l = l == 1 ? 2 : l;get_primes();for(int i = 0; i < cnt; i++){ll st = max(2ll,(l-1) / primes[i] + 1) * primes[i];for(ll j = st; j <= r; j += primes[i]) a[j - l] = true;}//区间范围,因为我们无法完全映射所有的区间,只能采用类似于偏移的办法对某段区间整体偏移l进行描述。int ans = 0;for (ll i = l; i <= r; i++) if (!a[i - l])ans++;printf("%d", ans);return 0;
}

解题思路

该代码使用了埃拉托斯特尼筛法来找出给定区间 [l, r] 内的所有素数。
get_primes 函数初始化了一个素数数组 primes 和一个布尔数组 vis,用于标记每个数是否为素数。然后使用筛法找出所有素数。
在 main 函数中,首先读取 l 和 r,并确保 l 不为 1。然后调用 get_primes 函数来获取素数。
接着,使用另一个循环来标记区间 [l, r] 内的所有合数。对于每个素数 p,计算其在区间内的最小倍数,并将这些倍数标记为合数。
最后,遍历区间内的所有数,统计素数的数量并输出。

题目4

代码

#include<iostream>
using namespace std;
int x, y;
int main() {cin >> x >> y;if ((y%x) != 0) {cout << 0 << endl;}else {int q = y / x;int begin = 2;int ans = 0;while (q > 1) {if ((q%begin) == 0) {ans++;while ((q%begin) == 0) {q /= begin;}}begin++;}cout << (1 << ans) << endl;}return 0;
}

解题思路

该代码的目的是找出一个数 x 的所有因子,并计算这些因子的幂集的大小。
在 main 函数中,首先读取 x 和 y,然后检查 y 是否能被 x 整除。如果不能,输出 0。
如果 y 能被 x 整除,计算 q = y / x,并初始化一个变量 begin 为 2。
使用一个循环来找出 q 的所有质因子。对于每个质因子,将其幂次加 1,并更新 ans。
最后,输出 2 的 ans 次幂,即因子幂集的大小。

题目5

代码

# include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+30;
int cnt[maxn], cnt2[maxn], a[maxn];
int main()
{int n, m;scanf("%d%d",&n,&m);for(int i=0; i<n; ++i){scanf("%d",&a[i]);if(a[i] <= m) ++cnt[a[i]];}for(int i=1; i<=m; ++i)for(int j=i; j<=m; j+=i)cnt2[j] += cnt[i];int ans = 0, id = 1;for(int i=1; i<=m; ++i)if(cnt2[i] > ans) ans = cnt2[i], id = i;printf("%d %d\n",id, ans);for(int i=0; i<n; ++i)if(id % a[i] == 0)printf("%d ",i+1);return 0;
}

解题思路

该代码的目的是找出一个数组中所有元素的最大公约数,并输出这个最大公约数以及它在数组中出现的次数。
在 main 函数中,首先读取 n 和 m,表示数组的大小和最大公约数的上限。
然后读取数组 a,并统计每个数出现的次数。
使用两个嵌套循环来计算每个数的倍数出现的次数,并更新最大公约数和出现次数。
最后,输出最大公约数和它在数组中出现的次数,并输出数组中所有能被最大公约数整除的元素的下标。

题目6

代码

#include<cstdio>
#include<algorithm>
using namespace std;
int mark[400001],a[100001];
int main(){int T,n,cntp,ans;for(register int i=2;i<=400000;++i) if(!mark[i]) for(register int j=(i<<1);j<=400000;j+=i) if(!mark[j]) mark[j]=i;//当时不会写欧拉筛,不过埃式筛同样可以胜任功能:Dscanf("%d",&T);while(T--){scanf("%d",&n),cntp=0;for(register int i=0;i<n;++i){scanf("%d",a+i);if(!mark[a[i]]) ++cntp,ans=a[i];}if(cntp>1) ans=-1;else{if(!cntp) ans=2;for(register int i=0;i<n;++i){if(ans^a[i]&&!(a[i]&1)&&(ans<<1)>a[i]){// printf("ans=%d a[i]=%d 0\n",ans,a[i]);ans=-1;break;}if(ans^a[i]&&(a[i]&1)&&a[i]-mark[a[i]]<(ans<<1)){// printf("ans=%d a[i]=%d 1\n",ans,a[i]);ans=-1;break;}}}printf("%d\n",ans);}return 0;
}

解题思路

该代码的目的是找出一个数组中所有元素的最大公约数,并输出这个最大公约数以及它在数组中出现的次数。
在 main 函数中,首先读取 n 和 m,表示数组的大小和最大公约数的上限。
然后读取数组 a,并统计每个数出现的次数。
使用两个嵌套循环来计算每个数的倍数出现的次数,并更新最大公约数和出现次数。
最后,输出最大公约数和它在数组中出现的次数,并输出数组中所有能被最大公约数整除的元素的下标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881609.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XMind2025电脑版最新免安装绿色解锁版

前言 XMind 2024中文版(就是XMind思维导图2024)是一款特别受欢迎的用来激发新想法和创造力的软件。在国内,很多人都在用它,因为它功能特别强大,不仅能帮助我们整理和管理思路,还能用来做商务展示,跟其他办公软件一起配合使用也很方便。这款软件用了一个国际上很先进的软…

Ollama+DeepSeek+AnythingLLM构建自己的大模型

环境:OS:windows 10###################################ollama的安装与配置######################################## 1.介质下载下载地址:https://ollama.com/download选择相应的操作系统版本下载,我这里下载的是windows版本。2.下载后点击运行安装OllamaSetup.exe双击运行,…

一款体积小巧、便捷、简单实用的windows任务栏透明美化工具

前言 如果你正在寻找一个能让Windows 10任务栏变得透明或者模糊的小工具,那么TranslucentTB正式版绝对是你的好帮手。它很小巧,用起来也很方便,而且功能很多。你可以通过它轻松地把任务栏变成透明的,或者给它加上一点模糊效果,这样你的桌面看起来就会更加整洁和美观。而且…

告警事件如何与 CMDB 打通附加更多元信息

告警事件产生之后,会带有一些 labels、annotations、description 等信息,有时这些信息不够规整需要二次处理,有时这些信息不够丰富需要附加更多信息,才方便 SRE 等 OnCall 人员快速定位、解决问题。具体应该如何做?本文会分享一些思路,希望对大家有所帮助。 需求场景举例…

deepseek基础篇--本地部署

官网:https://www.deepseek.com/ API文档:https://api-docs.deepseek.com/zh-cn/guides/reasoning_model 开放平台:https://platform.deepseek.com/usage 一、本地部署 本地安装Deepseek R1 Ollama本地安装Deepseek R1 模型 Ollama官网:https://ollama.com/ 打开官网,然后…

tabbar配置

tabbar在app.json中进行配置"tabBar": {"color": "#000000","selectedColor": "#000000","backgroundColor": "#000000","list": [{"pagePath": "pages/index/index",&q…

开放api接口平台:appid、appkey、appsecret 原创

转自:https://blog.51cto.com/u_14014612/5677760 开放api接口平台:appid、appkey、appsecret 原创 小波同学 2022-09-15 00:42:29 博主文章分类:日记本 文章标签 时间戳 客户端 数据 开放平台 开放api接口 文章分类 Java 后端开发 阅读数4314一、什么是appid、appkey、…

Pico 4 Enterprise(pico4企业版)玩转vrchat

下载PICOConnect-Oversea-release-signed.apk,使用数据线连接pico4e和电脑,直接将安装包上传到pico存储路径的安装包文件夹 到pico企业注册企业账号然后创建一个组织,组织随便起一个就行电话不用填 pico端打开设置,找到设备详情,连续点击8次版本号打开开发者选项,点开设置…

uni.createSelectorQuery()获取元素height获取不到或者与调试工具实际测量不一致

vue3使用 in() 支付宝小程序不支持 in(component),使用无效果import { getCurrentInstance } from vue; const instance = getCurrentInstance();const query = uni.createSelectorQuery().in(instance.proxy); query.select("#id").boundingClientRect((data) =&g…

1. Docker 的简介概述

1. Docker 的简介概述 @目录1. Docker 的简介概述2. Docker 的理念:3. 容器与虚拟机比较4. Docker应用场景5. 最后:为什么会有 Docker 出现: 假定你在开发一个项目,你使用的是一台笔记本电脑而且你的开发环境具有特定的配置,其他开发人员身处的配置也各不相同。这个开发的…

电脑光盘映像工具便携版BurnAware Professional v18.4.0

点击上方蓝字关注我 前言 BurnAware是一个非常厉害的光盘处理软件。它可以用来制作各种类型的光盘,比如存储数据的、启动电脑的、还有放电影和音乐的。不管是哪种规格的光盘,它都能搞定。而且,它还能处理光盘映像文件,比如ISO文件,你可以用它来刻录、复制或者创建这些文件…

第3章-布局

container: 容器🔥 理想的 WPF 窗口需要遵循以下几条重要原则❌ 以硬编码方式设定尺寸和位置是极其不当的处理方式,因为这会限制本地化界面的能力,并且会使界面更难处理动态内容。不应显式设定元素(如控件)的尺寸。 例如,当添加更多的文本时按钮应当能够扩展。可通过设置…