80分求助!
查看原帖
80分求助!
569235
w9095楼主2022/7/6 14:06

代码可能有点难看,敬请谅解。

#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int fz,fm;
bool flag;
int main()
{
	int m,n,i,j;
	double r,min=999999.0,fzf=0.0;
	scanf("%d%d",&m,&n);
	scanf("%lf",&r);
	for(j=1;j<=n;j++)
	        {
	        fzf=r*(j*1.0);
	        fzf+=0.5;
	        i=(int)fzf;
	        //printf("%d %d %d\n",i,j,flag);
			if(fabs(r-(i*1.0)/(j*1.0))>min)continue;
			if(__gcd(i,j)==1&&i<=m)
		        if(fabs(r-(i*1.0)/(j*1.0))<min){fz=i;fm=j;min=fabs(r-(i*1.0)/(j*1.0));flag=0;}
				else if(r-(i*1.0)/(j*1.0)==min)flag=1;
	        }
	if(fabs(r-0)<=min){printf("TOO MANY");return 0;}
	if(flag==0)printf("%d/%d",fz,fm);
	else printf("TOO MANY");
	return 0;
}

卡了点#4,#5,找不出问题,大佬orz (这题好像蓝变紫了)

2022/7/6 14:06
加载中...