C语言 求一个数N次方最后三位数

 我来答
方轩1140817
2017-04-14 · TA获得超过147个赞
知道答主
回答量:163
采纳率:96%
帮助的人:60.6万
展开全部

一、对于任意一个数,求最后三位数,可以对其用1000取余。 即对于任意的n,其最后三位数为

n%1000

二、对于任意整数n, 如果后三位为l,那么存在整数k, 可以将n写作

n=k*1000+l

的形式。 

三、对于任意的整数n1, n2,写作k1*1000+l1,k2*1000+l2的形式。 那么

n1*n2=(k1*1000+l1)*(k2*1000+l2)

=k1*k2*1000000+k1*l2*1000+k2*l1*1000+l1*l2

=(k1*k2*1000+k1*l2+k2*l1)*1000+l1*l2

所以,n1*n2的后三位,与l1*l2后三位相同。 

四、综上,算法可以设计为,要求n的N次方的后三位,只要每次乘的时候,只取后三位结果即可。 

五、代码如下:

#include <stdio.h>
int main()
{
    int n,N,i,r=1;
    scanf("%d%d",&n,&N);//输入n和N
    n%=1000; //n截取后三位。
    for(i = 0; i < N; i ++)//循环N次,计算N次乘积。
        r=r*n%1000;//每次结果取后三位。
    printf("%d\n", r);//输出结果
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式