本文主要是介绍每个猫群里都分为雄猫和雌猫,第一个猫群里有1只雄猫和n只雌猫,第二个猫群里有2只雄猫和n-1只雌猫....第n个猫群里有n只雄猫和1只雌猫。 xjy和hqy都很喜欢猫,他们对猫分别有好感度a和b,当,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
每个猫群里都分为雄猫和雌猫,第一个猫群里有1只雄猫和n只雌猫,第二个猫群里有2只雄猫和n-1只雌猫....第n个猫群里有n只雄猫和1只雌猫。
xjy和hqy都很喜欢猫,他们对猫分别有好感度a和b,当一个猫群的雄猫数是a的倍数时,这个猫群会对xjy产生好感,同样的,当一个猫群的雌猫数是b的倍数时,这个猫群会对hqy产生好感。
演唱结束后,他们想带一些猫群回他们自己的小窝,但是只有同时对xjy和hqy都产生好感的猫群才能被带走。
他们想知道能带走多少猫群,但xjy在hqy面前通常比较笨,所有只能求救于你了。
Input
第一行一个整数T,(1<=T<=50000),表示有T组测试样例。
之后T行,每行三个整数分别表示n,a,b(1<=n,a,b<=2147483647)
Output
共输出T行,每行对应一个测试数据,表示能带走的猫群数量。
Sample Input 1
2 5 2 4 10 2 3
Sample Output 1
1 2
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int gcd(ll a,ll b){if(b==0)return a;return gcd(b,a%b);
}
void ex_gcd(ll a, ll b,ll &x, ll &y){if(b==0){x = 1;y = 0;return ;}ex_gcd(b,a%b,x,y);ll tmp = x;x = y;y = tmp - a/b * y; return ;
}
int main(void){int t;scanf("%d",&t);ll a,b,n;while(t--){scanf("%lld%lld%lld",&n,&a,&b);int g = gcd(a,b);if((n+1) % g!=0){printf("0\n");continue;}else {ll x,y,ans=0;ex_gcd(a,b,x,y);ll k,minx , maxy, miny ;k = (n +1)/g;minx = x*k;miny = y*k;int d = b/g;minx = ( minx%d + d)%d;if(minx==0)minx = d; maxy = n+1- a * minx;if(maxy<0)ans =0;else{maxy /=b;d = a/g;miny = (miny%d +d )%d;if(miny==0)miny = d;ans = (maxy -miny)/d +1;}printf("%lld\n",ans);}}return 0;
}
这篇关于每个猫群里都分为雄猫和雌猫,第一个猫群里有1只雄猫和n只雌猫,第二个猫群里有2只雄猫和n-1只雌猫....第n个猫群里有n只雄猫和1只雌猫。 xjy和hqy都很喜欢猫,他们对猫分别有好感度a和b,当的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!