输入在一行中给出两个整数x和y,其中1<=x,y<=1000000000,编程求x^y 最后三位数表示的整数(附优化算法)

Source

这篇文章的难点在于x,y<=1000000000,不想付费购买文章最后的实现代码可以关注、评论、点赞本文章后私聊。

        因为C语言里面即使是规模最大的数据类型,也存不了十亿的十亿次方。因此,为了能够输出该结果,我充分利用“最后三位”这个条件,构建了我的程序。这是一个处理超大数据的思路,如果希望最终储存数据,很多博文里有讲过了,这里讲一下思路:转换为文本。

输入样例1:12 6

输出样例1:984

输入样例2:999 999

输出样例2:999

输入样例3:987654321 123456789

输出样例3:625

        仅仅是构造求x^y并输出后三位:

#include <stdio.h>
#include<math.h>
int main()
{
int i,x,y,s;
scanf("%d %d",&x,&y);
s=pow(x,y);
printf("%d",s%1000);
}

        这串代码很简单,也很清晰,但只能实现样例一。所以,我改变了数据类型,增加了一些优化。

        以下方法相对简单、运行时间较长,范围还是受到限制,能运行样例二:

#include <stdio.h>
int main()
{
long long i, x, y, last=1;                  
scanf("%lld %lld", &x, &y);
for(i&#