求助昨晚的arc B题,WA了7个点
  • 板块学术版
  • 楼主ran_qwq
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/4/9 10:03
  • 上次更新2023/10/23 18:58:51
查看原帖
求助昨晚的arc B题,WA了7个点
743048
ran_qwq楼主2023/4/9 10:03
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10,INF=0x3f3f3f3f;
int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
		x=x*10+ch-'0',ch=getchar();
	return x*f;
}
void Write(int x)
{
	if(x<0)
	{
		putchar('-'),Write(-x);
		return;
	}
	if(x<10)
	{
		putchar(x+'0');
		return;
	}
	Write(x/10),putchar(x%10+'0');
}
void write(int x,char *s)
{
	Write(x),printf("%s",s);
}
int n,m,d,g,cnt,len,pos=1,a[N];
void solve()
{
	n=read(),m=read(),d=abs(n-m),g=__gcd(n,m);
	if(!d)
		puts("1"),exit(0);
	for(int i=1;i*i<=d;i++)
		if(d%i==0)
		{
			if(i>=g)
				a[++len]=i;
			if(d/i>=g&&i*i!=d)
				a[++len]=d/i;
		}
	sort(a+1,a+1+len);
	for(int i=2;i<=len;i++)
		if(a[i]%a[i-1])
		{
			for(int j=i;j<len;j++)
				a[j]=a[j+1];
			len--,i--;
		}
	while(1)
	{
		int x,y;
		if(pos!=len)
			x=n/a[pos+1]*a[pos+1],y=m/a[pos+1]*a[pos+1],cnt+=(n-x)/a[pos++],n=x,m=y;
		else
		{
			cnt+=min(n,m)/d;
			break;
		}
	}
	write(cnt,"");
}
signed main()
{
	int T=1;
	while(T--)
		solve();
}


2023/4/9 10:03
加载中...