乘方(pow) CSP-J2022
题目描述
小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 a a a 和 b b b,求 a b a^b ab 的值是多少。
a b a^b ab 即 b b b 个 a a a 相乘的值,例如 2 3 2^3 23 即为 3 3 3 个 2 2 2 相乘,结果为 2 × 2 × 2 = 8 2 \times 2 \times 2 = 8 2×2×2=8。
“简单!”小文心想,同时很快就写出了一份程序,可是测试时却出现了错误。
小文很快意识到,她的程序里的变量都是 int
类型的。在大多数机器上,int
类型能表示的最大数为 2 31 − 1 2^{31} - 1 231−1,因此只要计算结果超过这个数,她的程序就会出现错误。
由于小文刚刚学会编程,她担心使用 int
计算会出现问题。因此她希望你在 a b a^b ab 的值超过 10 9 {10}^9 109 时,输出一个 -1
进行警示,否则就输出正确的 a b a^b ab 的值。
然而小文还是不知道怎么实现这份程序,因此她想请你帮忙。
输入格式
输入共一行,两个正整数 a , b a, b a,b。
输出格式
输出共一行,如果 a b a^b ab 的值不超过 10 9 {10}^9 109,则输出 a b a^b ab 的值,否则输出 -1
。
样例 #1
样例输入 #1
10 9
样例输出 #1
1000000000
样例 #2
样例输入 #2
23333 66666
样例输出 #2
-1
提示
对于 10 % 10 \% 10% 的数据,保证 b = 1 b = 1 b=1。
对于 30 % 30 \% 30% 的数据,保证 b ≤ 2 b \le 2 b≤2。
对于 60 % 60 \% 60% 的数据,保证 b ≤ 30 b \le 30 b≤30, a b ≤ 10 18 a^b \le {10}^{18} ab≤1018。
对于 100 % 100 \% 100% 的数据,保证 1 ≤ a , b ≤ 10 9 1 \le a, b \le {10}^9 1≤a,b≤109。
算法解析
可以用循环模拟乘幂的计算过程,ans=pow(a,i),循环中加判断
判断:if(ans>109) printf(“-1”);
但是ans可能会爆int,所以微调一下
ans=pow(a,i-1);
if(ans>109/a) printf(“-1”);
这样就没问题了
洛谷自测AC记录
代码
#include<bits/stdc++.h>
using namespace std;
const int Max=pow(10,9);//pow(a,b)是乘方函数,在cmath库中,表示a的b次幂
int a,b,ans=1;
int main()
{scanf("%d%d",&a,&b);//比赛建议用scanf()读入,不要忘记加上地址符&for(int i=1;i<b;i++){ans*=a;if(ans>Max*1.0/a){printf("-1");return 0;}}ans*=a;printf("%d",ans);return 0;
}
乘方(pow) CSP-J2022相关推荐
- python pow和**_第005篇:Python中的数字
既然文章是写给财务人员的,那么我就首先讲Python的数字. Python的数字有两类: 整数,英文叫做:integer,如:1,3,6,20,100等等 浮点数,英文叫做:float,如:1.2,6 ...
- python中的乘方_python乘方运算
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 算数运算符是完成基本的算术运算使用的符号,用来处理四则运算运算符描述实例+加10 ...
- python中如何打出乘方_python 乘方
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 可以在代码开头添加from __future__ import division ...
- python -- 计算 平方,乘方,平方根
1.计算乘方 pow(4,3) # 结果64 2.计算平方 import numpy numpy.square(4) # 结果16 pow(5,2) #结果25 3.平方根 import numpy ...
- C/C++cmath库常用函数
在一些计算题目中,我们常会用到求和.取绝对值以及求三角函数等代码,写出来需要耗费一番功夫.于是,C/C++库中提供了一个包含各种计算函数的头文件--cmath库. C/C++中的cmath头文件 C: ...
- 通过泰勒公式求sinx(C语言)
通过泰勒公式求sinx(C语言) 泰勒公式: 求解代码: #include <stdio.h> #include <stdlib.h>double userAbs(double ...
- C++:利用泰勒公式求e的x次方近似值
[问题描述] 已知的近似值可由下面公式计算得出: =1 + x/1! + /2! + /3! + ...... +/n! 给定x和n,利用上述公式求得的近似值. [输入形式] 从控制台输入小数x,和整 ...
- 乘方与开方 Math.sqrt(x) Math.pow(x,y)
Math.sqrt(9); //3 Math.pow(2,2) //4
- 浙大版《C语言程序设计(第3版)》题目集 练习2-17 生成3的乘方表 (15 分)
练习2-17 生成3的乘方表 (15 分) 输入一个非负整数n,生成一张3的乘方表,输出30~3n的值.可调用幂函数计算3的乘方. 输入格式: 输入在一行中给出一个非负整数n. 输出格式: ...
最新文章
- `pydot` failed to call GraphViz.Please install GraphViz
- 独家下载!《零售数据中台通关指南》,带你玩转新零售
- 【VS开发】这就是COM组件
- bzoj3160(FFT+回文自动机)
- 【计算机视觉】论文笔记:Ten years of pedestrian detection, what have we learned?
- 数字时代企业信息安全如何保障? VMware原生安全前来“保驾护航”
- 白话空间统计三十:地统计学(1)起源
- java基于SSM的宠物医院信息管理系统
- Java实现自定义工作流
- CSI笔记【4】:信道估计/Channel Estimation
- 【DenseFusion代码详解】linemod数据集预处理过程
- from_tensor_slices
- 一位程序员工作10年总结的10条建议
- 1971旗舰cpu intel_这就是近年来Intel最良心CPU!我彻底服了
- R语言将变量分组的三种方法(含cut函数介绍)
- thinking_in_java_version_1
- Linux之常用命令
- Leetcode2057. 值相等的最小索引
- 第10章 数据库恢复技术 | 数据库知识点整理
- 西红柿-生吃还是熟吃