数论之数论(GCD&LCM)于2020/8/1

hdu1019

套LCM模板

hdu1576

给我的启发还是推导公式
推导公式是数学题/数论题的基础
本题通过推导得到Bx-9973y=n(x即为所求)
然后套exgcd的模板即可

hdu2504

基础的GCD

hdu2588

题目给出的提示是用欧拉函数,但是我想破脑袋也不知道和欧拉函数的关系。
后来发现是要巧妙地转化一下,欧拉函数的重点就在于互质嘛
在这里插入图片描述很有趣的一道题目!
一定要试试看!

hdu5223

贪心+GCD

**hdu5584

LCM+思维
很有趣的一道题目,其中证明gcd始终为k的一步比较考验数学感觉。

hdu5902

暴力,很无聊的一题。
卡了我很久很久。

#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}
int a[1500];
bool g[1600];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		for(int i=1;i<=n;i++)cin>>a[i];
		memset(g,0,sizeof g);
		for(int i=1;i<=n;i++)
		{
			for(int j=i+1;j<=n;j++)
			{
				g[gcd(a[i],a[j])]=1;
			}
		}
		
		bool f=1;
		int num=2;
		while(f==1&&num<=n-2)
		{
			f=0;
			num++;
			for(int i=1;i<=1000;i++)
			{
				if(g[i])
				{
					for(int j=1;j<=n;j++)
					{
						if(!g[gcd(i,a[j])])
						{
							g[gcd(i,a[j])]=1;
							f=1;
						}
					}
				}
			}
		}
		int p=1;
		for(int i=1;i<=1000;i++)
		{
			if(g[i])
			{
				if(p)
				{
					p--;
					cout<<i;
				}
				else cout<<" "<<i;
			}
		}
		cout<<endl;
	}
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值