题目描述

小文同学刚刚接触了信息学竞赛,有一天她遇到了这样一个题:给定正整数 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相关推荐

  1. python pow和**_第005篇:Python中的数字

    既然文章是写给财务人员的,那么我就首先讲Python的数字. Python的数字有两类: 整数,英文叫做:integer,如:1,3,6,20,100等等 浮点数,英文叫做:float,如:1.2,6 ...

  2. python中的乘方_python乘方运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 算数运算符是完成基本的算术运算使用的符号,用来处理四则运算运算符描述实例+加10 ...

  3. python中如何打出乘方_python 乘方

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 可以在代码开头添加from __future__ import division ...

  4. python -- 计算 平方,乘方,平方根

    1.计算乘方 pow(4,3) # 结果64 2.计算平方 import numpy numpy.square(4) # 结果16 pow(5,2) #结果25 3.平方根 import numpy ...

  5. C/C++cmath库常用函数

    在一些计算题目中,我们常会用到求和.取绝对值以及求三角函数等代码,写出来需要耗费一番功夫.于是,C/C++库中提供了一个包含各种计算函数的头文件--cmath库. C/C++中的cmath头文件 C: ...

  6. 通过泰勒公式求sinx(C语言)

    通过泰勒公式求sinx(C语言) 泰勒公式: 求解代码: #include <stdio.h> #include <stdlib.h>double userAbs(double ...

  7. ​​​​C++:利用泰勒公式求e的x次方近似值

    [问题描述] 已知的近似值可由下面公式计算得出: =1 + x/1! + /2! + /3! + ...... +/n! 给定x和n,利用上述公式求得的近似值. [输入形式] 从控制台输入小数x,和整 ...

  8. 乘方与开方 Math.sqrt(x) Math.pow(x,y)

    Math.sqrt(9); //3 Math.pow(2,2) //4

  9. 浙大版《C语言程序设计(第3版)》题目集 练习2-17 生成3的乘方表 (15 分)

    练习2-17 生成3的乘方表 (15 分) 输入一个非负整数n,生成一张3的乘方表,输出3​0​​~3​n​​的值.可调用幂函数计算3的乘方. 输入格式: 输入在一行中给出一个非负整数n. 输出格式: ...

最新文章

  1. `pydot` failed to call GraphViz.Please install GraphViz
  2. 独家下载!《零售数据中台通关指南》,带你玩转新零售
  3. 【VS开发】这就是COM组件
  4. bzoj3160(FFT+回文自动机)
  5. 【计算机视觉】论文笔记:Ten years of pedestrian detection, what have we learned?
  6. 数字时代企业信息安全如何保障? VMware原生安全前来“保驾护航”
  7. 白话空间统计三十:地统计学(1)起源
  8. java基于SSM的宠物医院信息管理系统
  9. Java实现自定义工作流
  10. CSI笔记【4】:信道估计/Channel Estimation
  11. 【DenseFusion代码详解】linemod数据集预处理过程
  12. from_tensor_slices
  13. 一位程序员工作10年总结的10条建议
  14. 1971旗舰cpu intel_这就是近年来Intel最良心CPU!我彻底服了
  15. R语言将变量分组的三种方法(含cut函数介绍)
  16. thinking_in_java_version_1
  17. Linux之常用命令
  18. Leetcode2057. 值相等的最小索引
  19. 第10章 数据库恢复技术 | 数据库知识点整理
  20. 西红柿-生吃还是熟吃

热门文章

  1. php 工厂模式运用实例,php工厂模式的实例
  2. 动态分析股票走势算法图,股票趋势预测算法
  3. 致频繁跳槽的年轻人:一份工作做多久合适?
  4. Christopher Steiner:算法如何改变了世界
  5. UVa 10557 - XYZZY
  6. 计算机与英语相关工作,职业英语--计算机类
  7. MATLAB算法实战应用案例精讲-【自动驾驶】线控制动
  8. python项目一:外星人入侵:(一)武装飞船
  9. 心有多宽 路就有多宽
  10. SWUST OJ 699: Arbitrage