2 条题解
-
0
F1
这个题想必很多童鞋一拿到就想着用pow(a,b)来做,但是,想这么做的童鞋,请你想一想pow的特性有哪些他?好了,如果你想不起来,我帮你想。
1.返回值是个
double
A!2.考没考虑pow可能会爆炸?
所以pow用的好直接,用不好那就是直接爆0。
废话不说,上代码!
#include <bits/stdc++.h> #include <iostream> using namespace std; int ret(int x,int y){ if(pow(x, y)>1e9) return -1; else return (int)(pow(x, y)); } int main(){ freopen("pow.in","r",stdin); freopen("pow.out","w",stdout); ios::sync_with_stdio(false); int x, y; cin >> x >> y; cout << ret(x, y); return 0; }
F2
既然用pow容易爆零,那有没有什么不用pow也能做到和pow一样的效果的代码呢?当然是有的。我们只需要使用for循环来一点一点的乘,只要n大于1e9,就直接把n赋值为-1,然后
br
(你懂的)AC code
#include <bits/stdc++.h> #define ios ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr) #define LL long long int using namespace std; LL n=1,a,b; int main(){ ios; freopen("pow.in","r",stdin); freopen("pow.out","w",stdout); cin>>a>>b; for(int i=1;i<=b;i++){ n*=a; if(n>1e9){ n=-1; break; } } cout<<n; return 0; }
注意,CSP-J这里直接卡Time,稍不注意就有可能会
(因为我递交的时候时间是1001s)
信息
- ID
- 623
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 170
- 已通过
- 29
- 上传者