c++内置gcd,使用方法__gcd()
nefu 1669 高木同学的因子
模板
long gcd(long a,long b)
{
return b?gcd(b,a%b):a;
}
这题给西片同学,估计他肯定跪
这题实际是求最大公因数的因子的个数
#include
using namespace std;
long gcd(long a,long b)
{
return b?gcd(b,a%b):a;
}
long lcm(long a,long b)
{
return a*b/(gcd(a,b));
}
int main()
{
long long x,y,t,sum=0;
int i;
cin>>x>>y;
t=gcd(x,y);
for(i=1;i*i<t;i++)
{
if(t%i==0)sum+=2;
}
if(i*i==t)sum++;
cout<<sum<<endl;
return 0;
}
nefu 1077 最大公约数和最小公倍数 (模板题)
#include
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int a,b;
while(cin>>a>>b)
{
cout<<gcd(a,b)<<" "<<a*b/gcd(a,b)<<endl;
}
return 0;
}
nefu 764 多个数的最大公约数(模板题)
#include
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int fun(int a[],int n)
{
int ans=a[0];
for(int i=1;i<n;i++)
{
ans=gcd(ans,a[i]);
}
return ans;
}
int main()
{
int a,b[20],c;
while(cin>>a)
{
for(int i=0;i<a;i++)cin>>b[i];
cout<<fun(b,a)<<endl;
}
return 0;
}
nefu 765 多个数的最小公倍数(模板题)
#include
using namespace std;
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int lcm(int a,int b)
{
return a*b/(gcd(a,b));
}
int fun(int a[],int n)
{
int ans=a[0];
for(int i=1;i<n;i++)
{
ans=lcm(ans,a[i]);
}
return ans;
}
int main()
{
int a,b[20],c;
while(cin>>a)
{
for(int i=0;i<a;i++)cin>>b[i];
cout<<fun(b,a)<<endl;
}
return 0;
}
nefu 1411 LCM&GCD
lcm(x,y)gcd(x,y)==xy
这里不能用库函数,库函数是int类型,这里的爆int值得注意
#include
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b)
{return b?gcd(b,a%b):a;}
int main()
{
ll t,x,y;
cin>>t;
while(t--)
{
cin>>x>>y;
long long cnt=0;
for(int i=x;i<=y;i++)
{
if((x*y)%i!=0)continue;
ll t=(x*y)/i;
if(gcd(i,t)==x&&x/gcd(i,t)*y==y)cnt++;
}
cout<<cnt<<endl;
}
return 0;
}
nefu 1221 人见人爱gcd
跟上面差不多,知道lcm(x,y)gcd(x,y)==xy就能解出
#include
using namespace std;
long gcd(long a,long b)
{
return b?gcd(b,a%b):a;
}
long lcm(long a,long b)
{
return a*b/(gcd(a,b));
}
int main()
{
long t,a,b,c;
while(~scanf("%ld",&t))
{
while(t--)
{
scanf("%ld %ld",&a,&b);
printf("%ld\n",a*a-2*b*gcd(a,b));
}
}
return 0;
}