CSP-j 2022解题报告(前两题)

CSP2022-J-T2【解密(decode.cpp)】 阅读详情

[CSP-J 2022] 乘方

题目背景

由于众所周知的原因,官方数据现置于子任务 0,剩余的子任务为民间数据。

题目描述

小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 aaa 和 bbb,求 aba^bab 的值是多少。

aba^bab 即 bbb 个 aaa 相乘的值,例如 232^323 即为 333 个 222 相乘,结果为 2×2×2=82 \times 2 \times 2 = 82×2×2=8。

“简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。

小文很快意识到,她的程序里的变量都是 int 类型的。在大多数机器上,int 类型能表示的最大数为 231−12^{31} - 1231−1,因此只要计算结果超过这个数,她的程序就会出现错误。

由于小文刚刚学会编程,她担心使用 int 计算会出现问题。因此她希望你在 aba^bab 的值超过 109{10}^9109 时,输出一个 -1 进行警示,否则就输出正确的 aba^bab 的值。

然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。

输入格式

输入共一行,两个正整数 a,ba, ba,b。

输出格式

输出共一行,如果 aba^bab 的值不超过 109{10}^9109,则输出 aba^bab 的值,否则输出 -1。

样例 #1

样例输入 #1

10 9

样例输出 #1

1000000000

样例 #2

样例输入 #2

23333 66666

样例输出 #2

-1

提示

对于 10%10 \%10% 的数据,保证 b=1b = 1b=1。
对于 30%30 \%30% 的数据,保证 b≤2b \le 2b≤2。
对于 60%60 \%60% 的数据,保证 b≤30b \le 30b≤30,ab≤1018a^b \le {10}^{18}ab≤1018。
对于 100%100 \%100% 的数据,保证 1≤a,b≤1091 \le a, b \le {10}^91≤a,b≤109。

解题思路

通过while循环将b个a相乘即可,但是由于数据“1≤a,b≤1091 \le a, b \le {10}^91≤a,b≤109”,所以1的1e9次方会超时(虽然官方测试样例没有1),所以要特殊考虑,。

代码展示

#include <bits/stdc++.h>
using namespace std;
int main(){
	long long a,b;//记得开long long
	cin>>a>>b;
	long long ans=1;
	if(a==1)
		cout<<1<<endl;
	else{
		bool f=true;
		for(int i=1;i<=b;i++){
			ans*=a;
			if(ans>1e9){
				cout<<-1<<endl;
				f=false;
				break;
			}
		}
		if(f)
			cout<<ans<<endl;
	}
	return 0;
}

[CSP-J 2022] 解密

题目背景

由于众所周知的原因,官方数据现置于子任务 0,剩余的子任务为民间数据。

题目描述

给定一个正整数 kkk,有 kkk 次询问,每次给定三个正整数 ni,ei,din_i, e_i, d_ini​,ei​,di​,求两个正整数 pi,qip_i, q_ipi​,qi​,使 ni=pi×qin_i = p_i \times q_ini​=pi​×qi​、ei×di=(pi−1)(qi−1)+1e_i \times d_i = (p_i - 1)(q_i - 1) + 1ei​×di​=(pi​−1)(qi​−1)+1。

输入格式

第一行一个正整数 kkk,表示有 kkk 次询问。

接下来 kkk 行,第 iii 行三个正整数 ni,di,ein_i, d_i, e_ini​,di​,ei​。

输出格式

输出 kkk 行,每行两个正整数 pi,qip_i, q_ipi​,qi​ 表示答案。

为使输出统一,你应当保证 pi≤qip_i \leq q_ipi​≤qi​。

如果无解,请输出 NO。

样例 #1

样例输入 #1

10
770 77 5
633 1 211
545 1 499
683 3 227
858 3 257
723 37 13
572 26 11
867 17 17
829 3 263
528 4 109

样例输出 #1

2 385
NO
NO
NO
11 78
3 241
2 286
NO
NO
6 88

提示

【样例 #2】

见附件中的 decode/decode2.in 与 decode/decode2.ans。

【样例 #3】

见附件中的 decode/decode3.in 与 decode/decode3.ans。

【样例 #4】

见附件中的 decode/decode4.in 与 decode/decode4.ans。

【数据范围】

以下记 m=n−e×d+2m = n - e \times d + 2m=n−e×d+2。

保证对于 100%100\%100% 的数据,1≤k≤1051 \leq k \leq {10}^51≤k≤105,对于任意的 1≤i≤k1 \leq i \leq k1≤i≤k,1≤ni≤10181 \leq n_i \leq {10}^{18}1≤ni​≤1018,1≤ei×di≤10181 \leq e_i \times d_i \leq {10}^{18}1≤ei​×di​≤1018
,1≤m≤1091 \leq m \leq {10}^91≤m≤109。

测试点编号k≤k \leqk≤n≤n \leqn≤m≤m \leqm≤特殊性质
11110310^310310310^310310310^3103保证有解
22210310^310310310^310310310^3103无
33310310^310310910^91096×1046\times 10^46×104保证有解
44410310^310310910^91096×1046\times 10^46×104无
55510310^310310910^910910910^9109保证有解
66610310^310310910^910910910^9109无
77710510^5105101810^{18}101810910^9109保证若有解则 p=qp=qp=q
88810510^5105101810^{18}101810910^9109保证有解
99910510^5105101810^{18}101810910^9109无
10101010510^5105101810^{18}101810910^9109无

解题思路(方法一)

显而易见,我们可以通过暴力打出60分

代码展示(方法一)

#include <bits/stdc++.h>
using namespace std;

unsigned long long k,n,e,d;

int main(){
	cin>>k;
	for(int i=1;i<=k;i++){
		cin>>n>>e>>d;
		unsigned long long p,q;
		bool f=false;
		for(int j=1;j*j<=n;j++){
			if(n%j==0){
				q=n/j;
				if(e*d==(j-1)*(q-1)+1){
					f=true;
					p=j;
					break;
				}
			}
		}
		if(f)
			cout<<p<<" "<<q<<endl;
		else
			cout<<"NO"<<endl;
	}
	return 0;
}

解题思路(方法二)

根据题目,我们可以推出 p+q=n−e∗d+2=m,p + q = n − e ∗ d + 2 = m,p+q=n−e∗d+2=m,所以m=p+qm=p+qm=p+q,最后转化为解x2−mx+n=0x^2-mx+n=0x2−mx+n=0这个方程。

代码展示(方法二)

#include <bits/stdc++.h>
using namespace std;

long long k,n,e,d;

int main(){
	cin>>k;
	for(int i=1;i<=k;i++){
		cin>>n>>e>>d;
		long long m=n-e*d+2;
		long long f=m*m-4*n;
		if(f>=0){
			long long ff=sqrt(f);
			if(ff*ff==f&&(m-ff)%2==0){
				cout<<(m-ff)/2<<" "<<(m+ff)/2<<endl;
				continue;
			}
		}
		cout<<"NO"<<endl;
	}
	return 0;
}
【CSP-J 2022】解密 【CSP-J 2022】解密 解题报告 阅读详情

相关推荐

CSP-J 解题报告

CSP-J解题报告

wp_fxy的博客 555

CSP-S 2022题目与CSP-J 2022题目

CSP-S 2022题目与CSP-J 2022题目

lljloimjo的博客 2586

CSP-J复赛2022题解

对于2022年的CSP-J复赛感触深刻,故写一篇复盘题解

m0_67983744的博客 3544

【题解】CSP-J2022复赛题解

CSP-J2022第二轮试题详解。马上就要 csp2023 了,希望能借此冲一波粉丝量^_^。点进来看看啊!

hexu2010的博客 3357

【CSP-J 2022】乘方

【CSP-J 2022】乘方 解题报告

weixin_60849605的博客 1036

CSP-J 初赛模拟卷7(CSP-J2022真题) 题解

题解:编号为奇数的结点除了根结点,其余的一定是某一结点的右孩子。根据二叉树用数组存储的方法:设该结点编号为i,那么该结点的左孩子编号为2×i,右孩子编号为2×1+1,可以反推出这个结点的父节点的编号是(9-1)÷2=4,那么这个结点的兄弟节点就是它的父节点的左孩子,也就是编号为4×2=8的结点。则栈S的容量至少是(正解题解:首先修改结点s的指针域,让结点s的后继变为结点p的后继,再把p的后继结点的前驱变为s,最后修改p的指针域,把s的前驱结点变为p,p的直接后继结点变为s(因为是双链表,所以要双向存储)

Sat77GryHp_Pro的博客 2792

CSP-J初赛 输入输出汇总(2019~2022)

1、【2022年真题】以下哪种功能没有涉及C++语言的面向对象特性支持:(A )。备注:C语言是面向过程的 scanf/printf均是C语言函数。C.C++中构造一个class或struct。D.C++中构造来源于同一基类的多个派生类。B.C++中调用用户定义的类成员函数。A.C++中调用printf函数。

xinruzhishui012的专栏 264

【CSP-J 2022】逻辑表达式

【CSP-J 2022】逻辑表达式 解题报告

weixin_60849605的博客 1054

P8814 [CSP-J 2022] 解密(民间数据)题解

P8814 [CSP-J 2022] 解密(民间数据)题解

Sundar_2022的秘密基地 567

2022 CSP-J 第二轮认证真题解析

由于忙于考教资和考研的事情,题目一直没有去做,做完后第一题可以使用快速幂快速求,暴力枚举问题也不大;第二题二分或者韦达定理;第三题最难,中缀转后缀表达式;第四题可以套个floyed或者使用动态规划解决,参考最长上升子序列,2023祝大家RP++。

2555

麒麟KylinV10系统yum源更换全攻略:从官方源到第三方仓库的保姆级教程

本文详细介绍了麒麟KylinV10系统yum源的更换与优化方法,包括官方源配置、第三方仓库集成及RPM包管理技巧。通过实战案例和命令示例,帮助用户快速解决软件依赖问题,提升系统管理效率。特别适合需要在国产操作系统上进行开发的工程师参考。

weixin_30752699的博客 649

CSP-J 2022 解题报告

CSP-J 2022个人解题报告 NEVER GONNA GIVE YOU UP!

cadifobp0802的博客 682

手把手教你如何修改YOLO11的模型结构(以CBAM和可变性卷积为例)

YOLO11修改模型结构

2401_86807530的博客 1万+

2022 CSP-J1 CSP-S1 初赛 第1轮 真题讲评 真题解析

2022 CSP-J1 CSP-S1 初赛 第1轮 真题讲评 真题解析

青少年趣味编程 5402

[苹果开发者账号]03 申请APPID、苹果开发者账号 常见问题整理

目录:问题持续更新问题一:提示:抱歉,您暂时不能注册问题二:Apple Developer Support提示:联系我们以继续流程 问题一:提示:抱歉,您暂时不能注册 申请苹果开发者账号,应该先注册AppleID,由于很多都是申请的公司使用的苹果开发者账号。一般操作申请动作的人,可能是新手操作,也可能图方便,有些信息会随便填写。 有些人会把姓名填写为,公司的产品、简称、缩写等等。这是不对的。 还有出生日期也会随便乱填。生日如果填写的不对,会被苹果限制使用一些功能的(苹果给的提示不是太明确)。 当生日填写的

专注于技术开发、项目管理 1万+

【Hypermesh】TetraMesh Panel 常用选项详解

结合Hypermesh 2020 帮助文档和自己的一点使用经验,整理了这个博客。

qgm1702的博客 3678

[CSP-J 2022] 解密

2022CSP-J第二题

ljxid的博客 4045

如何在RT-DETR-R18中修改ultralytics的yaml文件(附完整代码)

本文详细指导如何在RT-DETR模型中,通过修改Ultralytics框架的yaml配置文件,将Backbone从ResNet50轻量化替换为ResNet18。核心步骤包括自定义ResNet18基础模块、调整HybridEncoder的expansion参数至0.5,并协同修改检测头Decoder层数,最终提供完整的配置文件代码,助力开发者在资源受限环境下部署轻量级实时目标检测模型。

weixin_29091445的博客 288

2022年CSP-J复赛真题解析

因此她希望你在 a^b 的值超过 10^9 时,输出一个 ‐1 进行警示,否则就输出正确的 a^b 的值。同理,在形如 a|b 的逻辑表达式中,会先计算 a 部分的值,如果 a = 1 ,那么整个逻辑表达式的值就一定为 1,无需再计算 b 部分的值。需要注意的是,如果某处“短路”包含在更外层被“短路”的部分内则不被统计,如表达式 1|(0&1) 中,尽管 0&1 是一处“短路”,但由于外层的 1|(0&1) 本身就是一处“短路”,无需再计算 0&1 部分的值,因此不应当把这里的0&1 计入一处“短路”。

weixin_42358969的博客 5189

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 558

杰理JL7033C芯片运行SoundFont音色库教程

本教程介绍如何在杰理JL7033C芯片上移植TinySoundFont音色库,实现MIDI播放功能。关键步骤包括:获取TinySoundFont开源代码,创建音色库声音播放数据流,封装核心功能文件。硬件需配备外部PSRAM和NOR FLASH存储音色库,软件使用杰理SDK和工具链。移植后系统可支持40个voice,满足MIDI播放和电子琴演奏需求。教程详细说明了代码移植过程,包括音色库文件处理、内存配置和音频流水线设置。

qq_42014563的博客 611

【题解】【洛谷P8814】【数学】—— [CSP-J 2022] 解密

前置知识:代数推理。

Pantheraonca的博客 1970

python opencv的车牌识别分割详细教程 毕业设计

python opencv的车牌识别分割详细教程 毕业设计

机器学习深度学习业余选手 1327

CSP-J2022 山东 题解

受疫情影响,山东省取消了 CSP-J 2022 认证活动,并于次年三月重新命题,在省内补办比赛。植树节快要到了,学校要组织志愿者去给树苗浇水。有一排树苗,编号依次是 0,1,2,…0,1,2,\dots0,1,2,…。现有 nnn 个志愿者去给树苗浇水,第 iii 个志愿者选定了一个区间 [ai,bi]\left[a_{i},b_{i}\right][ai​,bi​] ,表示第 iii 个志愿者将 [ai,bi]\left[a_{i},b_{i}\right][ai​,bi​] 这一区间内的每一棵树都浇一次

ZXTpower的博客 1046

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

2022 CSP-J2 CSP-S2 第2轮 视频及相关资料

2022 CSP-J2 CSP-S2 第2轮 视频及相关资料

青少年趣味编程 1434

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

下一篇: 上海市计算机学会竞赛平台(iai.sh.cn)十月月赛(丙组)解题报告
Net_bad
博客等级 码龄4年 331粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值