你的那个数据早就走出了int 甚至是long 所能表示的数的范围了,
如286^45=1.4402244274832698636045031051133e+151,要根本解决只能采用高精度数(数组)来描述.
数字太大就会超过int类型能表示的最大值,就会产生错误的结果,尝试改用long int或者unsigned long int
看看
然后286^45,同学 这是多大的一个数啊 你怎么不用计算机自带的算算?
初步建议 你可以用链表 我觉得用头查法比较简单 然后一个格存一个数
然后,还可以用这个,同余定理(中国剩余定理)来算 这就是数据结构问题了吧
#include"stdio.h"
int f(int a,int b,int e)
{
int i,s=1;
s=a%e;
for(i=1;i {
s=(s*a)%e;
}
return s;
}
main()
{
int a,b,c,d,e;
int a1,b1;
int i;
printf("(a^c)*(b^d) mod e\n");
printf("shuru dishu a,b:\n");
scanf("%d%d",&a,&b);
printf("shuru mizhishu c,d:\n");
scanf("%d%d",&c,&d);
printf("shuru moshu e:\n");
scanf("%d",&e);
a1=f(a,c,e);
b1=f(b,d,e);
i=(a1*b1)%e;
printf("yushu wei:%d\n",i);
getch();
}
这个就是对的啦 不管多大的数都没问题~