HJ82. 将真分数分解为埃及分数
描述
输入描述
输入一个真分数,String型
输出描述
输出分解后的string
示例1
输入:
8/11 2/4
输出:
1/2+1/5+1/55+1/110 1/3+1/6
说明:
第二个样例直接输出1/2也是可以的C 解法, 执行用时: 1ms, 内存消耗: 280KB, 提交时间: 2021-01-09
#include <stdio.h> int DG(int a, int b) { if(b) return DG(b, a%b); return a; } int main(void) { int a, b, tmp; for( ; scanf("%d/%d", &a, &b)!=EOF; ){ if((tmp=DG(a,b))!=1){ a/=tmp; b/=tmp; } if(a==1){ printf("%d/%d\n", a, b); continue; } for( ; a!=1; ){ tmp = b/a+1; printf("1/%d+", tmp); a -= b%a; b *= tmp; if((tmp=DG(a,b))!=1){ a/=tmp; b/=tmp; } } printf("1/%d\n", b); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 348KB, 提交时间: 2020-11-22
#include <stdio.h> int main() { int a,b,c; while(EOF != scanf("%d/%d\n", &a, &b)) { while(1 != a) { if(0 == b%a) { printf("1/%d",b/a); a=1; break; } else { c=b/a+1; printf("1/%d+",c); a=a*c-b; b=b*c; if (3==a&&0==(b%2)) { printf("1/%d+1/%d",b/2,b); a=1; break; } } } printf("\n"); } return 0; }