#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; }