孙博 @ 2020-01-21 21:16:45
我的思路是利用相同的分母比较分子的大小,从而判断大小,分母相同使用最小公倍数。想问下大佬我的这个有什么问题,k=1,k=2,k=3时数据都正确,但是到第四个就不对了,改成long long 类型能到第4个,第五个往后就不对了
#include <iostream>
#include <algorithm>
using namespace std;
int prevlcm=1,prevsum=1,lcm=1,sum=1,sum1=2,sum2=2;
int sn(int n,int k)
{
int res;
lcm=(prevlcm*n)/__gcd(prevlcm,n);
sum1=lcm/prevlcm*sum;
sum2=lcm/n;
sum=sum1+sum2;
res=k*lcm;
if(sum>res)
return n;
else
{
prevlcm=lcm;
prevsum=sum;
return sn(n + 1, k);
}
}
int main()
{
int n=2,k;
cin>>k;
n = sn(n,k);
cout<<n;
}
by WYXkk @ 2020-01-21 21:18:25
@孙博 思路没问题,只是结果化成分数的话分子分母都会特别大(指能到写高精的范围),所以此题应该用实数类型做
by 孙博 @ 2020-01-21 21:27:01
@WYXkk 谢谢大佬指点(っ•̀ω•́)っ✎