13836. 珅泽教育CSP-J第一轮模拟考第十八套 第 41 题
珅泽教育CSP-J第一轮模拟考第十八套 第 41 题
完善程序(2):分数化简与排版
给定一个分数 a / b,若它是假分数,请将它化简成带分数形式输出。例如 91 / 30 输出:
1
3--
30
当输入是真分数时,请将它化简后输出,并忽略整数部分。例如 30 / 100 输出:
3
--
10
当输入的分数可以变成整数时,忽略分数部分。所有输出分数都应为既约分数。回答第 40—45 题。
#include <iostream>
using i64 = long long;
i64 gcd(i64 n, i64 m)
{
if (m == 0) return n;
else return gcd(m, n % m);
}
void print(char c, int a) {
while (a > 0) {
std::cout << c;
a--;
}
}
int length(int a) {
if (a == 0) return 0;
else return length(a / 10) + 1;
}
int main()
{
i64 n, m;
char c;
std::cin >> n >> c >> m;
auto d = ______(1)______;
n = n / d;
m = ______(2)______;
auto z = ______(3)______;
n = n % m;
if (______(4)______) std::cout << z << "\n";
else {
print(' ', ______(5)______);
std::cout << n << "\n";
if (z > 0) std::cout << z;
print('-', ______(6)______);
std::cout << "\n";
print(' ', length(z));
std::cout << m << "\n";
}
}
(2)处应填( )。
{{ select(1) }}
m / dm % dn / dd / m