题目链接:
点击打开链接
http://codeforces.com/contest/10/problem/C
题意:
定义d(x)为x的数字根,找出n以内的满足d(z)=d(d(x)⋅d(y))但不满足x⋅y=z这样的x,y,z有多少组?
d(A)是数根,其实就是A%9.
题解:
容斥原理,首先把所有的d(A)d(B)=d(C)的都计算了。
然后减去AB==C且d(A)d(B)=d(C)的,由于显然AB=C,那么d(A)d(B)=d(C).
所以我们只需要减去AB=C的情况就好了。
首先我们能够知道d(x⋅y)=d(d(x)⋅d(y)),那么我们只要找出n以内的数的约数的个数,即n/i就知道了满足条件的情况数,作为ans1。
然后我们通过记录数字根分别是1−9的数的个数,然后直接利用
a[i]∗a[j]∗a[k],其中,(k=i⋅j)
即a[i]∗a[j]∗a[i∗jmod9]
可以计算得到k分为因数i和j的所有情况,作为ans2。
然后用ans2−ans1即可。
AC代码: