#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
void fun(const char *a,const char *b ,char *c)
{
int remainder=0;
int length=strlen(a)>strlen(b)?strlen(a):strlen(b);
int x=length;
for (int i=strlen(a)-1,j=strlen(b)-1;i>=0||j>=0;i--,j--)
{
int x1,x2;
if (i>=0)
x1=a[i]-'0';
else
x1=0;
if (j>=0)
x2=b[j]-'0';
else
x2=0;
div_t temp=div(x1+x2+remainder,10);
remainder=temp.quot;
c[length--]=temp.rem+'0';
}
if(remainder!=0)
{
c[0]=remainder+'0';
c[x+1]='\0';
}
else
{
for (int i=0;i<=x+1;i++)
{
c[i]=c[i+1];
}
c[x]='\0';
}
}
void main()
{
char sum[100000]={"\0"};
char temp1[100000]={'\0'};
char temp2[100000]={'\0'};
sum[0]='1';
for (int i=1;i<=722;i++)
{
if (strlen(sum)>6)
{
strcpy(temp2,sum+strlen(sum)-6);
strcpy(temp1,sum+strlen(sum)-6);
}
else
{
strcpy(temp2,sum);
strcpy(temp1,sum);
}
for (int j=1;j<=14694;j++)
{
fun(temp1,temp2,sum);
if (strlen(sum)>6)
{
strcpy(temp1,sum+strlen(sum)-6);
}
else
{
strcpy(temp1,sum);
}
}
}
cout<<sum<<endl;
}
#include<stdio.h>
int main()
{
int i,x,y,last= 1; /*变量last保存求X的Y次方过程中的部分乘积的后三位*/
printf("Input X and Y(X**Y):");
scanf("%d**%d",&x,&y);
for(i = 1;i <= y;i++) /*X自乘Y次*/
last = last * x % 1000; /*将last乘X后对1000取模,即求积的后三位*/
printf("The last 3 digits of %d**%d is:%d\n",x,y,last%1000); /*打印结果*/
return 0;
}