杭电 ACM 2035
2016-07-18 15:53
417 查看
New~ 欢迎参加2016多校联合训练的同学们~ |
人见人爱A^BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 35082 Accepted Submission(s): 23801 [align=left]Problem Description[/align] 求A^B的最后三位数表示的整数。 说明:A^B的含义是“A的B次方” [align=left]Input[/align] 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。 [align=left]Output[/align] 对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。 [align=left]Sample Input[/align] [align=left]2 3[/align] [align=left]12 6[/align] [align=left]6789 10000 [/align] [align=left] [/align] [align=left] [/align] [align=left]Sample Output[/align] [align=left]8[/align] [align=left]984[/align] [align=left]1[/align] [align=left] [/align] [align=left]解题思路:刚开始我使用了二分制法来解决这个题目,但是WA了。到后来使用long 来代替int 倒是AC,,,[/align] [align=left]二分制法:pow(a,b/2)*pow(a,b/2)=pow(a,b);[/align] pow(a,b/4)*pow(a,b/4)=pow(a,b/2); #include<iostream> #include<math.h> using namespace std; int main() { int a,b,k,sum; while(cin>>a>>b && (a != 0 || b != 0)) { int x[12] = {0,a,pow(a,2),pow(a,4),pow(a,8),pow(a,16),pow(a,32),pow(a,64),pow(a,128),pow(a,256),pow(a,512),pow(a,1024)}; sum = 1; k = 0; while(b != 0) { k++; if(b % 2 == 1) { sum *= x[k]; sum %= 1000; } b /= 2; } cout<<sum<<endl; } return 0; } 以下代码是AC的: #include<iostream> using namespace std; int main() { int a,b; long sum; while(cin>>a>>b && (a != 0 || b != 0)) { sum = 1; while(b--) { sum *= a; sum %= 1000; } cout<<sum<<endl; } return 0; } [align=left] [/align] [align=left] [/align] |
相关文章推荐
- POJ 1084(DLX重复覆盖)
- 获取当前控件的背景颜色
- chapter 1:计算机系统漫游
- chapter 1:计算机系统漫游
- JAVA广度优先搜索---寻找从A点到B点最短路径
- 概述 RequireJS是一个工具库,主要用于客户端的模块管理。它可以让客户端的代码分成一个个模块,实现异步或动态加载,从而提高代码的性能和可维护性。它的模块管理遵守AMD规范(Asynchronou
- 深入理解HashMap(及hash函数的真正巧妙之处)
- App架构设计经验谈:服务端接口的设计
- 合并两个排序的链表
- 移动端Web开发如何处理横竖屏
- 五分钟学会 Canvas 基础(一)
- Android轮播图的实现
- 合并区间
- [Database] 数据库索引-聚合索引与非聚合索引
- AngularJS 过滤器
- 1.【排序】Merge Sorted Array--Accepted Java code
- 动态规划之最长公共子序列
- POJ 1789
- android studio 代码快捷键
- faster rcnn源码理解(二)之AnchorTargetLayer(网络中的rpn_data)