信息学奥赛复赛复习16-CSP-J2022-01乘方-循环特判、pow函数、快速幂

PDF文档回复:20241012

此前解析题,P8813 [CSP-J 2022] 乘方,给出了循环的解题思路,当时在洛谷提交是通过的,后台收到留言,a=1,b=1e9会炸吧?,确实啊整除要求1s内循环次数最大可以到10^7,现在测试数据明显大很多,按测试数据有这个可能,没想到CSP普及组第1题竟然翻车,去CCF官网去找测试数据,竟然没有2022年的测试数据,去另外一个OJ上面测试了一下,竟然有超时测试用例

提交原码

#include<bits/stdc++.h>
using namespace std;
const int N=1e9;//允许的最大值 超出输出-1 
int a,b;//输入a b 
long long m=1;//存储 a^b 
int main(){cin>>a>>b;//输入a bfor(int i=0;i<b;i++){//循环b次 m=m*a;//m从1开始每次乘以a if(m>N){//如果大于允许的最大值 输出-1 cout<<"-1";			return 0;//退出程序 }}cout<<m;//输出 a^b return 0;
}

分析

确实a=1的时候,b可以比较大,最后也需要循环结束才计算出结果,如果a不是1,循环次数就大大减少

可以分情况讨论 a=1和a!=1

下面给出3种方法

1 循环特判

#include<bits/stdc++.h>
using namespace std;
const int N=1e9;//允许的最大值 超出输出-1 
int a,b;//输入a b 
long long m=1;//存储 a^b 
int main(){cin>>a>>b;//输入a bif(a==1){cout<<"1";return 0;} for(int i=0;i<b;i++){//循环b次 m=m*a;//m从1开始每次乘以a if(m>N){//如果大于允许的最大值 输出-1 cout<<"-1";			return 0;//退出程序 }}cout<<m;//输出 a^b return 0;
}

2 用快速幂解法

如下用快速幂改造后的程序,不在超时,可以顺利通过

#include <bits/stdc++.h>
using namespace std;
const int N=1e9;
long long a,b,ans=1;
long long quickpow(long long a, long long b) {while (b) {if (b & 1) {ans = ans * a;}if(a>N) return -1;if (ans > N) return -1;a *= a;b >>= 1;}return ans;
}int main() {cin >> a >> b;cout << quickpow(a, b) << endl;	return 0;
}
/*
输入 
1 992465817
输出
1 
*/ 

普及组第1题用快速幂有点过分了,看看还有没有其他解法

3 pow函数解法

#include<bits/stdc++.h>
using namespace std;
const int N=1e9;//允许的最大值 超出输出-1 
int a,b;//输入a b
double ans; 
int main(){cin>>a>>b;//输入a bans=pow(a,b);if(ans>N){cout<<-1<<endl;}else{cout<<(int)ans;//输出 a^b	}return 0;
}
/*
输入 
1 992465817
输出 
1
*/ 

可以顺利通过

这里顺便说一些pow函数

C++中有自带的pow()函数,具有求指定底数的指定幂值。通常使用该函数求解幂

实现原理为快速幂,时间复杂度为O(logN)

#include<iostream>
#include<cmath>
using namespace std;
/*pow函数该函数接收两个参数,base 为要取次方的数,exponent 为指数。返回结果为 base 的 exponent 次方 double x =pow(base,exponent);pow=(2,3)=8 
*/ 
int main(){int base=2;int exponent=3;double x=pow(base,exponent);cout<<x<<endl;exponent=4;x=pow(base,exponent);cout<<x<<endl;return 0;
}
/*
输出
8
16 
*/ 

如下为原题

[题目描述]

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

a^b 即 b 个 a 相乘的值,例如 2^3 即为 3 个 2 相乘,结果为 2×2×2=8

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

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

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

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

[输入格式]

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

[输出格式]

输出共一行,如果 a^b 的值不超过 10^9,则输出 a^b 的值,否则输出 -1

[输入输出样例]

输入 #1

10 9

输出 #1

1000000000

输入 #2

23333 66666

输出 #2

-1

说明/提示

数据规模

对于 10% 的数据,保证 b=1。
对于 30%的数据,保证 b≤2。
对于 60% 的数据,保证 b≤30,a^b≤ 10^18。
对于 100% 的数据,保证 1≤a,b≤10^9。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘图如何变现,看完这篇保姆级教程,你也会了!

哈喽&#xff0c;各位小伙伴们&#xff01;今天我要给你们送上我正在捣鼓的AI绘画商业项目的超详细指南。这份指南就像是个超级保姆&#xff0c;专门照顾你的AI绘画项目&#xff0c;让你省心省力。重点在于那些实用的技术细节&#xff0c;我保证你一看就能明白。 让我们带着你…

Python 如何处理数据库事务

Python 如何处理数据库事务 数据库事务是指一组操作要么全部执行成功&#xff0c;要么全部回滚的过程。事务是确保数据库一致性的重要手段&#xff0c;特别是在处理需要多步操作的场景时&#xff0c;能够避免部分数据成功更新而部分数据失败的情况。本文将详细介绍什么是数据库…

关于Amazon Linux 2023的版本及包管理器

在亚马逊上创建EC2实例时&#xff0c;会看到有一个Amazon Linux镜像。 那这个镜像与其他Linux有什么关系和区别呢&#xff1f; 网站是介绍&#xff1a;Amazon Linux 2023 是基于 Linux 的现代化通用操作系统&#xff0c;提供 5 年的长期支持。它针对 AWS 进行了优化&#xff0…

【Python】 列表解析 语法 实例展示 说明统统一顿明白!!!

列表解析 根据已有列表&#xff0c;高效创建新列表的方式。 列表解析是Python迭代机制的一种应用&#xff0c;它常用于实现创建新的列表&#xff0c;因此用在[]中。 语法&#xff1a; [expression for iter_val in iterable] [expression for iter_val in iterable if con…

代码注释,是程序员的美德还是无能的表现?

前言 嗨&#xff0c;大家好&#xff01; 今天咱们来聊聊一个老生常谈但又永远不过时的话题 —— 代码注释。 你是不是也经历过这样的时刻&#xff1a;打开一段陌生的代码&#xff0c;就像进入了迷宫一样找不到北&#xff1f;这时候&#xff0c;一个好的注释简直就是你的指路…

飞机大战ai通过dqn实现

借鉴 飞机大战源码 github 王者荣耀ai训练(试了一下&#xff0c;发现电脑带不动&#xff0c;就改了一点&#xff0c;训练其他游戏) 源码 通过网盘分享的文件&#xff1a;PlaneWar (2).zip [链接]&#xff08;https://pan.baidu.com/s/1N4OorR7b36Zml8MadGmI6g?pwd1234&#xf…

第十六章 RabbitMQ延迟消息之延迟插件优化

目录 一、引言 二、优化方案 三、核心代码实现 3.1. 生产者代码 3.2. 消息处理器 3.3. 自定义多延迟消息封装类 3.4. 订单实体类 3.5. 消费者代码 四、运行效果 一、引言 上一章节我们提到&#xff0c;直接使用延迟插件&#xff0c;创建一个延迟指定时间的消息&…

晶体匹配测试介绍

一、晶体参数介绍 晶体的电气规格相对比较简单,如下: 我们逐一看看每个参数, FL就是晶体的振动频率,这个晶体是24.576MHz的。 CL就是负载电容,决定了晶体频率是否准确,包括外接的实际电容、芯片的等效电容以及PCB走线的寄生电容等,核心参数。 Frequency Tolerance是…

堆排序(C++实现)

参考&#xff1a; 面试官&#xff1a;请写一个堆排序_哔哩哔哩_bilibiliC实现排序算法_c从小到大排序-CSDN博客 堆的基本概念 堆排实际上是利用堆的性质来进行排序。堆可以看做一颗完全二叉树。 堆分为两类&#xff1a; 最大堆&#xff08;大顶堆&#xff09;&#xff1a;除根…

Deep tone mapping network in HSV color space

Abstract 色调映射算子可以将高动态范围(HDR)图像转换为低动态范围(LDR)图像&#xff0c;这样我们就可以用LDR设备享受HDR图像的信息内容。然而&#xff0c;目前的色调映射算法主要关注亮度映射&#xff0c;而忽略了颜色分量。与此同时&#xff0c;它们经常遭受光晕伪影和过度…

IaaS,PaaS和SaaS的区别讲解

IaaS、PaaS和SaaS有什么区别吗&#xff1f;这三个概念非常简单。 只不过在说它们仨的区别前&#xff0c;有个常识需要知道一下&#xff1a; 我们传统开发一个软件&#xff0c;需要9个东西&#xff1a; 作为使用软件的人&#xff0c;左边的【应用】和【数据】&#xff0c;是离…

Django的请求与响应

Django的请求与响应 1、常见的请求2、常见的响应3、案例 1、常见的请求 函数的参数request是一个对象&#xff0c;封装了用户发送过来的所有请求相关数据。 get请求一般用来请求获取数据&#xff0c;get请求也可以传参到后台&#xff0c;但是传递的参数显示在地址栏。 post请求…

企业内部文档安全外发如何挑选合适的外发系统?

企业文档的外发不仅关系到运营效率&#xff0c;更是信息安全的重要组成部分。面对B2B模式下文档交换的普遍性和重要性&#xff0c;企业内部文档的安全外发成为了众多公司关注的重点之一。 随着互联网技术的发展&#xff0c;企业之间的合作越来越紧密&#xff0c;文档的交流也变…

Java Agent 技术解析

什么是Java Agent Java Agent是在 JDK1.5 引入的一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行&#xff0c;在 JVM 在执行这些字节码之前获取这些字节码信息&#xff0c;并且通过字节码转换器对这些字节码进行修改&#xff0c;来完成一些额外的功…

第十四章:收尾过程组(14.1结束项目或阶段--14.2收尾过程组重点工作)

14.1 结束项目或阶段 过程定义&#xff1a;终结项目、阶段或合同的所有活动的过程 14.1.1 主要输入 1.项自章程 项目章程记录了项目成功标准、审批要求&#xff0c;以及由谁来签署项目结束 2.项目管理计划 项目管理计划的所有组成部分均为结束项目或阶段过程的输入。 3.项…

【视觉分割新SOTA|论文解读1】一种最先进的图像分割模型——Segment Anything Model (SAM)

【视觉分割新SOTA|论文解读1】一种最先进的图像分割模型——Segment Anything Model (SAM) 【视觉分割新SOTA|论文解读1】一种最先进的图像分割模型——Segment Anything Model (SAM) 文章目录 【视觉分割新SOTA|论文解读1】一种最先进的图像分割模型——Segment Anything Mod…

全院级、流程化的医院安全不良事件管理系统源码——等级医院评审工作的辅助工具

前言&#xff1a; 冰山理论”指出“每件严重不良事件背后可能隐藏着10件轻微的不良事件”“存在30件未造成伤害的差错可能存在600件引发意外的异常事件”没有一件不良事件应该被忽视&#xff01; 一项研究也指出95%医生曾目睹错误的发生&#xff0c;61%的医务人员认为医疗错误…

基于Python星载气溶胶数据处理与反演分析技术

MODIS&#xff08;中分辨率成像光谱仪&#xff09;和CALIOP&#xff08;云-气溶胶偏振激光雷达&#xff09;是两种重要的星载遥感观测平台&#xff0c;它们提供了大量的气溶胶数据。MODIS通过成像光谱技术获取不同波长的遥感数据&#xff0c;从而得到气溶胶的空间分布、光学厚度…

耳夹式耳机哪个最好?2024年五大热门耳夹式耳机品牌分享

耳夹式耳机哪个最好&#xff1f;2024年五大热门耳夹式耳机品牌分享 耳夹式蓝牙耳机怎样才算好、算优质呢&#xff1f;哪款比较好呢&#xff1f;对于第一个问题&#xff0c;我认为耳夹式蓝牙耳机得具备以下几个特征优势才称得上是优质产品。其一&#xff0c;要能提供清晰、平衡…

nuxtjs使用rem 实现自适应窗口的大小

效果图&#xff1a; 步骤 1&#xff1a;安装 PostCSS 和 PostCSS 插件 npm install postcss postcss-pxtorem --save-dev步骤 2&#xff1a;配置 nuxt.config.ts // nuxt.config.ts export default defineNuxtConfig({compatibilityDate: 2024-04-03,devtools: { enabled: …