L1-009. N個數求和
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 ...”給出N個有理數。題目保證所有分子和分母都在長整型範圍內。另外,負數的符號一定出現在分子前面。 輸出格式: 輸出上述數字和的最簡形式 —— 即將結果寫成“整數部分 分數部分”,其中分數部分寫成“分子/分母”,要求分子小於分母,且它們沒有公因子。如果結果的整數部分為0,則只輸出分數部分。 輸入樣例1:
5 2/5 4/15 1/30 -2/60 8/3輸出樣例1:
3 1/3
2 4/3 2/3輸出樣例2:
2輸入樣例3:
3 1/3 -1/6 1/8輸出樣例3:
7/24首先,我們將最後的結果設為x/y,在最開始,把x設為0,y設定為1。依次和輸入的資料進行相加。 每次加完以後檢查x和y是否可以約分,如果可以,就約分,不然會溢位。 題目測試資料還是不夠強,例如: 資料1:1/-5 (應該輸出-1/5) 資料2:-5 -2/3 (應該輸出-5 2/3) 這兩種情況題目中並沒有進行測試。 這裡給出了對資料1和2進行約束的程式。(旁邊有*的程式碼。)
#include <cstdio> #include <cstdlib> #define LL long long using namespace std; LL getGcd(LL a, LL b) { return b == 0 ? a : getGcd(b, a % b); } LL getLcm(LL a, LL b) { return a * b / getGcd(a, b); } LL n, a, b, x, y; int main () { scanf("%lld", &n); x = 0; y = 1; for (int i = 0; i < n; i++) { scanf("%lld/%lld", &a, &b); int lcm = getLcm(y, b); x = x * (lcm / y) + a * (lcm / b); y = lcm; int gcd = getGcd(x, y); x /= gcd; // 相加完成後能約分就約分 避免超出範圍 y /= gcd; } LL integer = x / y; x %= y; /**/if (y < 0 && x > 0) { /**/ y *= -1; /**/ x *= -1; /**/} /**/if (y < 0 && x < 0) { /**/ x *= -1; /**/ y *= -1; /**/} if (integer == 0) { if (x == 0) { printf("0\n"); } else { int gcd = getGcd(x, y); printf("%lld/%lld\n", x / gcd, y / gcd); } } else { if (x == 0) { printf("%lld\n", integer); } else { /**/if (integer < 0) { /**/ int gcd = getGcd(x, y); /**/ printf("%lld %lld/%lld\n", integer, abs(x / gcd), abs(y / gcd)); } else { int gcd = getGcd(x, y); printf("%lld %lld/%lld\n", integer, x / gcd, y / gcd); } } } return 0; }
檢視原文:http://iluhao.top/archives/744
相關推薦
2018/12/04 PAT刷題 L1-009 N個數求和 java
看了好久的程式碼, 終於看懂了: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in
L1-009. N個數求和-PAT團體程式設計天梯賽
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。輸入格式:輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 ...”給出N個有理數。題目保證所有分子和分母都在長
L1-009. N個數求和
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 ...”給出N個有理數。題目保證所有分子和分
PAT L1-009. N個數求和 分數求和 struct過載
L1-009. N個數求和 時間限制 400 ms 記憶體限制 65536 kB 程式碼長度限制 8000 B 本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格
天梯賽習題 L1-009. N個數求和
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 ...”給出N個有理數。題目保證所有分子和分母都在長整型範圍內。另外,負數
團體程式設計天梯賽-練習集L1-009. *N個數求和
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 ...”給出N個有理數。題目保證所有分子和分母都在長整型範圍內。另外,負數的符號
L1-009. N個數求和(n個分數相加)
本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一
L1-009. N個數求和-PAT團體程式設計天梯賽GPLT
L1-009. N個數求和 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/b1 a2/b2 ...”給出N個有理數。題目保證所有分子和分母都在長整型範圍內。另
L1-009 N個數求和
一行 turn main -h pro scan 範圍 ng- amp L1-009 N個數求和 (20 分) 本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數分子/分母的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正
L1-9 N個數求和
n) 判斷 整數 str 要求 只有一個 因數 個數 整型 本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數“分子/分母”的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(<=100)。隨後一行按格式“a1/
PTAL1-009 N個數求和解題報告---GCD & LCM
L1-009 N個數求和&n
ZZULIOJ 1039: n個數求和
題目描述 輸入一個整數n和n個整數,輸出這n個整數的和。 輸入 輸入有兩行:第一行是一個正整數n,第二行是n個整數。 輸出 輸出一個整數,即n個數的和。輸出單獨佔一行。 樣例輸入
ZZULIOJ 1081: n個數求和 (多例項測試)
題目描述 求n個整數的和。 輸入 輸入第一行是一個整數T,表示有T組測試例項; 每組輸入包括兩行: 第一行一個數n表示接下來會有n個整數; 第二行空格隔開的n個數。 輸出 對於每組
【PTA 5-1 N個數求和 (20分)】+ gcd
5-1 N個數求和 (20分) 本題的要求很簡單,就是求N個數字的和。麻煩的是,這些數字是以有理數分子/分母的形式給出的,你輸出的和也必須是有理數的形式。 輸入格式: 輸入第一行給出一個正整數N(\le≤100)。隨後一行按格式a1/b1 a2/b2
C4top-N個數求和 (分數求和模擬)
#include<bits/stdc++.h> using namespace std; #define INF 0xfffffff #define MAXN 1100 struct Node { long long x,y;//分子分母 } a[MAXN]; long long gc
任意n個數求和
給定一個數值,再輸入n個任意的數相加,如果和等於給定的數值,就輸出:YES! #include<iostream> using namespace std; int main() { int i,n,x,sum,s,a; cin>>s>>n;
從N個數中取出任意個數,求和為指定值的解
題目來自CSDN的帖子: 原題是這樣的: 任意給一陣列,如{-10,45,35,99,10,6,9,20,17,18} 再任意給一個值,如35. 請從上面的陣列中找出所有的組合,使他們的和等於35. 例如對於上面的陣列,所有的組合情況為: 35; -10+45; 17+
n個數 取任意個數相加求和的個數
// MicroSofrInterviewProblem2.cpp : Defines the entry point for the console application. //有若干個給定的數(都
D. Powerful array 離線+莫隊算法 給定n個數,m次查詢;每次查詢[l,r]的權值; 權值計算方法:區間某個數x的個數cnt,那麽貢獻為cnt*cnt*x; 所有貢獻和即為該區間的值;
code ++ 計算方法 equal ati contains tdi ces sum D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input st
排列組合問題:n個數中取k個數
() spa 條件 esp sizeof pac ret emp space /************************************有0~n-1共n個數,從其中任取k個數,*已知這k個數的和能被n整除,求這樣的*k個數的組合的個數sum,*輸入:n,k*