有三个不同的初始数字 $a,b,c,$ 每一次可以选择两个不同的数字,然后计算出这两个不同数字之差的绝对值,如果没有这个数字,那么就把这个新数字添加进来,问最多能添加的数字个数 $(a,b,c < 10^{18})$
题解
先考虑两个数$a,b(a>b)$,设$x=gcd(a,b),即a=tx,b=kx,a-b=(k-t)x,$由于$(t,x)$互质,由欧几里得定理可知,通过 $t,x$ 以及其相减得到的数可以算出所有 $(1$ ~ $t)*x$, 故两个数的问题解决,由 $gcd(gcd(a,c),gcd(b,c))=gcd(gcd(a,b),c)$,故多个数也是求出多个数的 $gcd$, $maxx/gcd$ 即为最后可以得到数字的总数
update:
上面的方法我自己回来看都没看懂
参考官方题解:
最后得到的数一定是 d=ax+by+cz,考虑更相损减数的过程(两个数求最大公约数),两个数a,b通过相减最小可以得到的数字为g=gcd(a,b),则设a=tg,b=kg, 则(t,k)互质,考虑xt+yk,若a>b, 则最多有a/g个数,三个数同理可得