Description
求 (X * Y) Mod Z的值。其中A Mod B表示A除以B的余数。
Input
多组输数据,每组一行,即 X,Y,Z的值,以空格隔开,输入以0 0 0 结束。
其中2 < X ,Y ,Z < 254。
Output
Sample Input
1 1 1
1 2 3
0 0 0
Sample Output
0
2
Hint
Source
TOJ
#include<stdio.h>
#include<math.h>
int main()
{
__int64 x,y,z,a,b;
double p;
p = pow(2,32); // 2的32次方
while(scanf("%I64d %I64d %I64d",&x,&y,&z),x||y||z)
{
x = x % z;
y = y % z;//积模分解公式
if(x > p || y > p)//如果x或y依然大于2^32的话,相乘依然会溢出,这时各减去z
{
a = x - z;
b = y - z;
printf("%I64d\n",a * b % z);
}
else
printf("%I64d\n", x * y % z);
}
}