首页 > 代码库 > PAT 1081. Rational Sum
PAT 1081. Rational Sum
#include <cstdio>#include <cstdlib>using namespace std;long long gcd(long long a, long long b) { long long r; while (r = (a % b)) { a = b; b = r; } return b;}int main() { int N; scanf("%d", &N); long long sa = 0, sb = 1, a, b; for (int i=0; i<N; i++) { scanf("%lld/%lld", &a, &b); long long newb = b * sb / gcd(b, sb); long long sf = newb / sb; long long cf = newb / b; sa = sa * sf + a * cf; sb = newb; long long c = gcd(sa < 0 ? -sa : sa, sb); sa = sa/c; sb = sb/c; } if (sa < 0) { printf("-"); sa = -sa; } long long r = sa % sb; long long q = sa / sb; if (r == 0) { printf("%lld\n", q); } else { if (q != 0) { printf("%lld ", q); } printf("%lld/%lld\n", r, sb); } return 0;}
还好数值范围没有超
PAT 1081. Rational Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。