比赛 |
202110省实验桐柏一中普及组联赛 |
评测结果 |
ETTTTETTAE |
题目名称 |
分数约分 |
最终得分 |
10 |
用户昵称 |
增强型图元文件 |
运行时间 |
7.009 s |
代码语言 |
C++ |
内存使用 |
11.82 MiB |
提交时间 |
2021-10-18 20:55:40 |
显示代码纯文本
#include <bits/stdc++.h>
#include <cmath>
#define e 0.000000000001
using namespace std;
struct ld{
int nums[1010];
ld(){
}
ld(int x){
memset(nums,0,sizeof(nums));
int w=1;
while(x>0){
nums[w]=x%10;
x=x/10;
w++;
}
nums[0]=w;
while(nums[nums[0]]==0&&nums[0]>1){
nums[0]--;
}
}
ld(string s){
nums[0]=s.size();
for(int i=1;i<=nums[0];i++){
nums[i]=s[nums[0]-i]-'0';
}
}
ld operator-(const ld b){
ld ma=*this;ld mb=b;
if(mb>ma){
ma=b;mb=*this;
}
for(int i=1;i<=ma.nums[0];i++){
if(ma.nums[i]-mb.nums[i]<0){
ma.nums[i]+=10;
ma.nums[i+1]--;
}
ma.nums[i]=ma.nums[i]-mb.nums[i];
}
while(ma.nums[ma.nums[0]]==0&&ma.nums[0]>1){
ma.nums[0]--;
}
return ma;
}
bool operator>(const ld b) const{
if(this->nums[0]>b.nums[0]){
return true;
}
if(this->nums[0]<b.nums[0]){
return false;
}
for(int i=this->nums[0];i>=1;i--){
if(this->nums[i]>b.nums[i]){
return true;
}else if(this->nums[i]<b.nums[i]){
return false;
}
}
return false;
}
bool operator<(const ld b) const{
if(this->nums[0]<b.nums[0]){
return true;
}
if(this->nums[0]>b.nums[0]){
return false;
}
for(int i=this->nums[0];i>=1;i--){
if(this->nums[i]<b.nums[i]){
return true;
}else if(this->nums[i]>b.nums[i]){
return false;
}
}
return false;
}
bool operator>=(const ld b){
if(this->nums[0]>b.nums[0]){
return true;
}
if(this->nums[0]<b.nums[0]){
return false;
}
for(int i=this->nums[0];i>=1;i--){
if(this->nums[i]>b.nums[i]){
return true;
}else if(this->nums[i]<b.nums[i]){
return false;
}
}
return true;
}
ld operator/(const ld b){
ld ma=*this;
int res=0;
while(ma>=b){
ma=ma-b;
res++;
}
return ld(res);
}
void print(){
for(int i=nums[0];i>=1;i--){
cout<<nums[i];
}
}
};
struct descc{
ld a,b;
descc(){
}
descc(ld sa,ld sb){
a=sa;b=sb;
ld g=gcd(max(a,b),min(a,b));
a=a/g,b=b/g;
}
ld gcd(ld x,ld y){
ld tx(0);
return y>tx ? gcd(y,x-y) : x;
}
};
int main(int argc, char** argv) {
freopen("yuefen.in","r",stdin);
freopen("yuefen.out","w",stdout);
string a,b;
cin>>a>>b;
ld la(a),lb(b);
descc dc(la,lb);
dc.a.print();
cout<<" ";
dc.b.print();
return 0;
}