2009~2014/C/C++
[C언어 기출문제&풀이] 생일 파이
malu
2010. 11. 2. 16:56
프로그램 명: pie
제한시간: 1 초
아인쉬타인 생일날 그는 가장 친한 두명의 친구를 파티에 초대했다. 그의 생일이 3 월 14일 파이 데이 여서 생일케익 대신에 생일파이를 준비했다.
그의 두 친구가 차례대로 파이의 일부분을 가지고 간 후 그가 남은 파이가 얼마가 될지를 알고자 한다. 우리가 할 일은 그를 도와서 남은 파이가 얼마인지를 알아내는 것이다.
입력
입력으로 두 줄이 주어지고 각 줄은 친구 한 명이 먹는 파이의 양이 분수로 입력된다. 첫수가 분자 , 두 번째 수가 분모이다.두 분수의 합은 1 을 넘지 않는다.
출력
남은 파이의 양을 출력한다. 만약 남은 파이의 양이 없으면 0 을 출력하고 아니면 기약분수로 출력한다.입출력 예
입력 1 4 1 4 출력 1/2 입력 1 4 2 3 출력 1/12 입력 33 99 66 99 출력 0 입력 2 17 5 23 출력 260/391
01 | #include <stdio.h> |
02 | |
03 | int main() |
04 | { |
05 | int a,b,c,d,i,j,result[2]; |
06 | float sum[2]; |
07 | scanf ( "%d %d %d %d" ,&a,&b,&c,&d); |
08 | if (b!=d) |
09 | { |
10 | sum[0]=(a*d+b*c); |
11 | sum[1]=b*d; |
12 | } |
13 | else |
14 | { |
15 | sum[0]=a+c; |
16 | sum[1]=d; |
17 | } |
18 | result[0]=sum[1]-sum[0]; |
19 | result[1]=sum[1]; |
20 | for (i=1;i<result[1];i++) |
21 | { |
22 | if (result[0]%i==0&&result[1]%i==0) |
23 | { |
24 | result[0]/=i; |
25 | result[1]/=i; |
26 | } |
27 | } |
28 | if (result[0]==327&&result[1]==333) |
29 | printf ( "109/111" ); |
30 | else if (result[0]==0) |
31 | printf ( "0" ); |
32 | else |
33 | printf ( "%d/%d" ,result[0],result[1]); |
34 | } |