OJ,VJ人见人爱A^B
2020-07-02 22:10
78 查看
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
Sample Input
2 3
12 6
6789 10000
0 0
Sample Output
8
984
1
#include<stdio.h> #include<string.h> #include<math.h> int main() { long long n, m, remainder, i; long long a[300], b[200]; while(scanf("%lld%lld", &n, &m) != EOF) { if(n == 0 && m == 0) break; remainder = 1; for(i = 0; i < m; i++) remainder = (remainder * n)%1000; printf("%lld\n", remainder); } return 0; }
这个求A的B次方后3位数的题。由于数据可以出的很大,我一点办法也没有。
虽然数据很大,但在每次运算时使用的“工具数据”,即使用“某种公式”,这个“某种公式”公式的系数也很大。那么就可以减少运算量。
这也是考验学生们对算法的寻找和设计能力吧。
尤其是第一位博主的解析,道清了每次使用(余数*底数)%1000,取余的原理。求后3位就对1000取余。求后4为就对10000取余。
由乘法竖式原理,结果的后3位数总是由一系列加法运算得来的。经观察可得,每次用1000取余得到的后3位数并没有丢失掉我们需要使用的数据的性质。
以上代码参考一下两位博主:
https://blog.csdn.net/Hunter_Kevin/article/details/105425025?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-12.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-12.nonecase
相关文章推荐
- OJ, VJ An easy problem——写个博客提醒下自己C语言字母字符的语法
- 九度OJ题目1441:人见人爱 A ^ B
- OJ人见人爱A-B
- 贪心题集(vj&&oj)
- OJ, VJ The sum problem——定区间内查找符合条件区间——等差数列公式在计算机中的巧妙应用
- 【杭电-oj】-2033-人见人爱A+B(时间)
- OJ, VJ Snooker——用switch的一个小教训
- 【杭电oj2035】人见人爱A^B
- 杭电OJ -- 2033 人见人爱A+B(c++练手的好题目)
- 杭电OJ -- 2034 人见人爱A-B(c++练手的好题目)
- 论那些在vjduge等oj平台踩过的坑
- 人见人爱A+B oj117
- VJ简单数学 I 题 Hard Equation SDUT OJ 数论基础
- OJ, VJfind your present (2)——用异或运算找到一列数中(该列数必然只含奇数个数)唯一出现奇数次数的数是谁
- 九度OJ-1441:人见人爱 A^B(二分求幂)
- OJ, VJ 整除的尾数——第二次没考虑到特殊情况下输出的问题,这次是没考虑到特殊情况下的输出格式
- OJ, VJ Perfect Cubes——一道暴搜题。
- 2014/08/16——VJ/OJ时好时坏,why?
- 2014/08/16——VJ/OJ时好时坏,why?
- OJ,VJ三角形