题目链接:https://gmoj.net/junior/#main/show/2524
题目描述
Beny 想要用蛋糕填饱肚子。Beny 一共想吃体积为 c 的蛋糕,他发现有两种蛋糕可以吃,一种体积为 a,一种体积为 b,但两种蛋糕各有特色。Beny 想知道他一共有多少种不同吃法, 使得他恰好可以填饱肚子。
输入
t第一行一个 t
接下来 t 行,每行三个正整数 a,b,c
输出
对于每个 a,b,c,输出一个整数表示有几种不同吃法
样例输入
样例输入 1
3
2 3 4
3 4 24
3 7 11
样例输入 2
4
12 13 1003
56 44 792
4616 5364 836482148
3836501 7035978 77151863500136
样例输出
样例输出 1
1
3
0
样例输出 2
6
2
135
3
数据范围限制
对于 30%的数据 t<=10,a,b,c<=100
对于 60%的数据 t<=100,a,b,c<=10^9
对于 100%的数据 t<=10000,a,b,c<=10^14
做法
题目大意:给你三个数 a,b,ca,b,ca,b,c ,要你求出 ax+by=cax+by=cax+by=c 的所有自然数解的个数。
小插曲:
本人感慨:哟!这不 exgcd 吗?几天不见,这么拉了?!
exgcd:鬼!
然后 exgcd 把我推出了 AC 的位置。。。
咳咳,回归主题。
我们首先用 exgcd 求出特殊解,然后判断 ccc 是否是 gcd(a,b)gcd(a,b)gcd(a,b) 的倍数,不是就直接输出 0 ,否则继续后面的操作。
我们让 a,b,ca,b,ca,b,c 同时除以 gcd(a,b)gcd(a,b)gcd(a,b) ,用来缩小数据范围,防止数据过大而爆掉。
之后求出 xx