从微软面试题说开去 23 April 2016 题目 实验室有同学去微软ASG面试,回来后交流了一下面经,发现有题目比较有意思。 题目是这样的:求3的1000万次方的后3位。 其实,这个题目更加一般化的描述是,给定一个数m,求它的n次方的后k位数。 解题思路 测试公式 $$ E = mc2 $$ 最朴素的思路 #include <math.h> #include <stdio.h> int main() { int t, n; scanf("%d", &t); while(t--) { scanf("%d", &n); double f = n*log10((double)n); double decimal = f - floor(f); int ans = floor(pow(10, decimal)); printf("%d\n", ans); } } 快速幂解法