题目链接:here~~
分析:对于一个整数n,设f(n)为n的各个位之和,有这样一个等式 n%9=f(n)%9;
证明:同余定理(a+b)%c=(a%c+b%c)%c,还有显然成立和k*(10^M)%9=k,代入到n%9=f(n)%9中,
即可得证n%9=f(n)%9是成立的。
还要注意我们所求的是一个一位数,而我们是对9取余的,当余数为0时,我们要的结果可能是0,可能是9。是0的情况,只有开始时两个乘数至少有一个为0。其他情况为9。
下面是代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
long long a, b;
int n;
scanf("%d", &n);
while (n--)
{
scanf("%lld%lld", &a, &b);
if (a==0||b==0)
cout<<"0\n";
else
{
int c=(a%9)*(b%9)%9;
if (c==0) c=9;
printf("%d\n", c);
}
}
return 0;
}