분수 의 사 칙 연산
11308 단어 도구 알고리즘
분수 의 표시:
가장 간결 한 표기 법 은 가짜 점수 로 쓰 는 형식 이다.
struct Fraction{
int up,down;
}
세 가지 규칙: 1. 다운 을 비 마이너스 로 합 니 다.만약 점수 가 마이너스 라면 다른 분자 up 은 마이너스 면 된다. 만약 이 점수 가 0 이 라면 다른 up = 0, down = 1 이다.3. 분자 와 분 모 는 1 을 제외 한 공약수 가 없다
분수 의 간소화
점수 화 간소화 는 주로 Fraction 변 수 를 점수 표시 의 세 가지 규정 을 만족 시 키 는 데 사용 되 기 때문에 간소화 절차 도 세 단계 로 나 뉜 다. 1. 분모 다운 이 마이너스 라면 다른 분자 up 과 분모 다운 은 모두 반대 수 2. 분자 up 이 0 이면 다른 분모 다운 은 0 이다.3. 약분: 분자 절대 치 와 분모 절대 치 의 최대 공약수 d 를 구하 고 다른 분자 와 분 모 를 동시에 d 로 나눈다.코드 는 다음 과 같 습 니 다:
Fraction reduction(Fraction result){
if(result.down<0){
result.up=-result.up;
result.down=-resultt.down;
}
if(result.up==0)result.down=1;
else{
int d=gcb(abs(result.up),result.down);
result.up/=d;
result.down/=d;
}
return result;
}
분수 의 사 칙 연산
1. 분수 의 덧셈: 두 점수 f1 과 f2 에 대한 덧셈 계산 공식 은 result = (f1. upf 2. down + f2. upf 1. down) / (f1. down * f2. down) 이다.코드 는 다음 과 같 습 니 다:
Fraction add(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.down+f2.up*f1.down;
result.down=f1.down*f2.down;
return reduction(result);
}
2. 점수의 감법:
Fraction minu(Fraction f1,Fraction f2){
Fracton result;
result.up=f1.up*f2.down-f1.down*f2.up;
result.down=f1.down*f2.down;
return reduction(result);
}
3. 분수 의 곱셈:
Fraction multi(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.up;
result.down=f1.down*f2.down;
return reduction(result);
}
4. 분수 의 나눗셈:
Fraction divide(Fraction f1,Fraction f2){
Fraction result;
result.up=f1.up*f2.down;
result.down=f1.down*f2.up;
return reduction(result);
}
분수 의 출력
1. 출력 점수 전에 이 를 간소화 해 야 한다. 만약 에 분수 의 분모 down = 1 은 이 수가 정수 라 는 것 을 설명 한다. 일반적인 문 제 는 분 자 를 직접 출력 하 라 고 요구 하고 분모 의 출력 을 생략 해 야 한다. 만약 에 점수 r 의 분자 up 의 절대 치가 분모 down 보다 크 면 이 점 수 는 가짜 점수 라 는 것 을 의미한다. 이때 점수 가 있 는 형식 으로 출력 해 야 한다. 즉, 정수 부분 은 r. up / r. 다운 이 고 분자 부분 은 abs (r. up)% r. down 이다.분모 부분 은 r. down 입 니 다. 출력 예제 입 니 다.
void showResult(Fraction r){
r=reduction(r);
if(r.down==1)printf("%llf",r.up); //
else if(abs(r.up)>r.down){ //
printf("%d %d/%d",r.up/r.down,abs(r.up)%r.down,r.down);
}else{ //
printf("%d/%d",r.up,r.down);
}
}