#1649. 珅泽教育CSP-J第一轮模拟考第五套 第 43 题
珅泽教育CSP-J第一轮模拟考第五套 第 43 题
第2题
给定一个分数 ,若它是一个假分数,请将它化简成带分数形式输出。例如当 ,输出
1
3--
30
当输入是一个真分数时,请将它化简后输出,且忽略整数部分,例如当 时,输出
3
--
10
当输入的分数可以变成整数时,忽略它分数部分。注意输出的所有分数都应该是既约的。
#include<iostream>
int len(int n) {
int length = 0;
while (n > 0) {
n/=10;
length++;
}
return length;
}
void print(int n, char ch) {
while (n-->0) std::cout << ch;
}
int main()
{
int a, b;
char dummy;
std::cin >> a >> dummy >> b;
int p = a;
int q = b;
while (a != 0 and b != 0) {
if (a >= b) a %= b;
else b %= a;
}
int gcd;
if ( ____(1)____ ) gcd = b;
else gcd = a;
int i = p / q;
p %= q;
p /= gcd;
q /= gcd;
if ( ____(2)____ ) {
std::cout << i << "\n";
}
else {
int i_len = len(i);
int p_len = len(p);
int q_len = len(q);
____(3)____ ;
std::cout << ____(4)____ << "\n";
if (i != 0) std::cout << i ;
____(5)____ ;
std::cout << "\n";
____(6)____ ;
std::cout << ____(7)____ << "\n";
}
}
(3) (4) 处应填( )。
{{ select(1) }}
print(i_len + q_len - p_len, ' '),pprint(i_len + q_len - p_len, '-'),qprint(i_len + q_len + p_len, ' '),qprint(i_len + q_len + p_len, '-'),p