C语言做题目的时候遇到的问题 感觉自己就是转不过来弯 如果有前辈把自己思考的过程写在下面 小弟感激不尽呀!
#include<stdio.h>
/*
求一个整数任意次方后的最后三位数字
*/
int main()
{
int i, x, y, z = 1;
printf("请输入两个数,x和y(y是x的幂):\n");
scanf("%d %d", &x, &y);
for (i = 1; i <= y; i++)
{
z = z*x % 1000;
if (z >= 100)
{
printf("%d%d的最后三位数是:%d", x, y, z);
}
else
{
printf("%d%d的最后三位数是:%d", x, y, z);
}
}
return 0;
}
/*
算法分析:
y为x的幂 z用来保存这个整数任意次方后的最后三位数字
试数字
1234的2次方为 1 522 756
1》 x=1234 y=2
i=1 i<=2
z=z*1234%1000=234
z>100
i++=2
2》z=234*1234%1000=756
疑惑:
为什么要判断z的值是否大于或者等于100呢?
还有为什么这个数的最后三位数x这个数的结果的最后三位数 就是这个数平方积的最后三位数了 这是一个公式吗?
234 * 1234 % 1000
*/