社区讨论
70pts 求助
P2118[NOIP 2014 普及组] 比例简化参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo15vu5g
- 此快照首次捕获于
- 2023/10/22 15:42 2 年前
- 此快照最后确认于
- 2023/11/02 15:17 2 年前
考试时我怕此题爆精度,所以没用 类型,用的乘法,结果 了 3 个点,求助。
代码如下:
C#include <bits/stdc++.h>
using namespace std;
#define int unsigned long long
int a,b,l,ans1,minn1=1e13,ans2,minn2=1e13,m,temp,temp1,temp2,x,y;
int _min(int x,int y){
return x<y?x:y;
}
bool huzhi(int x,int y){
if(x%y==0 || y%x==0)return false;
for(int i=2;i*i<=_min(x,y);i++){
if(x%i==0 && y%i==0)return false;
}
return true;
}
int gcd(int a,int b){
if(b==0)return a;
return gcd(b,a%b);
}
int lcm(int a,int b){
return a*b/gcd(a,b);
}
void bijiao(int i,int j,int a,int b,int n,int m){
int t=i-a;
if(minn1==1e13 && minn2==1e13){
ans1=n;
ans2=m;
minn1=t;
minn2=j;
return ;
}
if(t*minn2<j*minn1){
ans1=n;
ans2=m;
minn1=t;
minn2=j;
}
return ;
}
signed main(){
//freopen("ratio.in","r",stdin);
//freopen("ratio.out","w",stdout);
cin>>a>>b>>l;
for(int i=1;i<=l;i++){
for(int j=1;j<=l;j++){
if(i*b>=a*j){
if(huzhi(i,j)){
temp=lcm(j,b);
temp1=temp/j;
temp2=temp/b;
x=i*temp1;
y=a*temp2;
bijiao(x,temp,y,temp,i,j);
}
}
}
}
cout<<ans1<<' '<<ans2;
return 0;
}
rt.
回复
共 1 条回复,欢迎继续交流。
正在加载回复...