谁能告诉我这个有理数化简输入-1&-1为什么会炸
  • 板块灌水区
  • 楼主IDNo1
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/28 21:32
  • 上次更新2023/10/28 21:49:45
查看原帖
谁能告诉我这个有理数化简输入-1&-1为什么会炸
777131
IDNo1楼主2023/10/28 21:32
#include<bits/stdc++.h>
#define re register int
#define ll long long 
using namespace std;
void hj(int x,int y)
{
//	cout<<"youlishu:";
	int flag=0;
	if(x<0)flag++;
	if(y<0)flag++;
	if(flag%2==1)
	{
		cout<<"-"; 
	}
	x=abs(x);
	y=abs(y);
	vector<int> ys;
	int i=2;
	for(;i*i<x;i++)
	{
		if(x%i==0)
		{
			ys.push_back(i);
			ys.push_back(x/i);
		}
	}
	if(x%(i*i)==0)
	{
		ys.push_back(i);
	}
	sort(ys.begin(),ys.end());
//	for(i=0;i<ys.size();i++)
//	{
//		cout<<ys[i]<<" ";
//	}
	cout<<ys.size()<<" ";
	while(x>=ys.front()&&y>=ys.front()&&!ys.empty())
	{
		while(y%ys.front()==0&&x%ys.front()==0)
		{
			x=x/ys.front();
			y=y/ys.front();
		}
		ys.erase(ys.begin());
	}
	if(y==1)cout<<x<<"\n";
	else cout<<x<<"/"<<y<<"\n";
}
int main(){
	int x=-1,y=-1;
	hj(x,y);
	return 0;
}
2023/10/28 21:32
加载中...