C语言 一个数太大的问题 怎么改?

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:12:22
题目:求13的13次方的最后三位数

#include <stdio.h>

void main ()
{
int a=13;
int i,j;
long sum=1;
for(i=0;i<13;i++)
{
sum=sum*a;

}
printf("%d\n",sum);
j=sum%1000;
printf("%d\n",j);
}
运行是可以 但结果却是错的
应该是结果数超出范围了吧
怎么改?

#include <stdio.h>

void main ()
{
int a=13;
int i,j;
long sum=1;
for(i=0;i<13;i++)
{
sum=sum*a;
sum%=1000;//加上这一句

}
printf("%d\n",sum);
j=sum%1000;
printf("%d\n",j);
}

#include <stdio.h>

void main ()
{
int i,sum=1;
for(i=1;i<=13;i++)
{
sum=sum*13;
if(sum>=1000)
sum = sum%1000;
}
printf("%d\n",sum);
}