上海第五人民医院网址:求一个整数任意次方的最后三位数.用C++来编的,有谁能帮帮我?

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/25 12:37:51

只要将求出的大于1000的数只取百十个位就好了,然后再进行计算,每次都如此,就不会出现溢出,因为千位以上对最后三位没影响,程序如下
int lastthr(int num,int n) //num的n次方
{
int thr,tmp;
tmp=num%1000; //对1000取余,得最后三位
thr=tmp;
while(--n)
{
thr*=tmp;
thr%=1000;
}
return thr;
}

对于num,n均为正情况,以上程序在Dev-C++通过。

#include<iostream>
using namespace std;

void main()
{
const int N=10; //N次方
int i=0;
int num=25; //整数num
int sum=1;
for(i=0;i<N;i++)
{
sum*=num;
}
printf("%d\n",sum%1000); //输出最后三位数
}

int a(int b ,int c )
{
int d = b;
while( --c > 0 )
{
d *= b;
d &= 0xfff;
}
return d;
}

long abc(long x ,long y )
{
long u =0;

if(y>=3)
u=x%10
else
u=x%1000;

for(long i=0;i<y;i++)
u*=x;
return u%1000;
}

long abc(long x ,long y )
{
long u = x;
for(long i=1;i<y;i++)u*=x;
return u%1000;
}

支持水晶的. 其它的在最后对1000取模的话, 中间恐怕会溢出