欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!
专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。
适合人群:
- 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
- 希望系统学习C++/Python编程的初学者
- 想要提升算法与编程能力的编程爱好者
附上汇总贴:学而思编程周赛语言基础组 | 汇总
【题目描述】
屏幕分辨率是指纵横向上的像素点数,单位是px。屏幕分辨率确定计算机屏幕上显示多少信息的设置,以水平和垂直像素来衡量。就相同大小的屏幕而言,当屏幕分辨率低时(例如 640 ∗ 480 640*480 640∗480),在屏幕上显示的像素少,单个像素尺寸比较大。屏幕分辨率高时(例如 1920 ∗ 1080 1920*1080 1920∗1080),在屏幕上显示的像素多,单个像素尺寸比较小。
我们能够根据对应的屏幕分辨率计算出屏幕的长宽比,例如:分辨率为 1920 ∗ 1080 1920*1080 1920∗1080的屏幕,其长宽比为16:9,即屏幕分辨率的水平像素尺寸与垂直像素尺寸的最简比例。
现在给定一个屏幕的分辨率x*y,请你计算该屏幕的长宽比
【输入】
一行,两个整数x,y。
【输出】
一行,以:隔开的两个整数,表示屏幕的长宽比。
【输入样例】
1920 1080
【输出样例】
16:9
【代码详解】
#include <bits/stdc++.h>
using namespace std;
// 计算两个整数的最大公约数(GCD)
int gcd(int a, int b) // 使用辗转相除法(欧几里得算法)
{
while (a % b != 0) { // 当余数不为0时继续计算
int r = a % b; // 计算余数
a = b; // 将除数赋给被除数
b = r; // 将余数赋给除数
}
return b; // 当余数为0时,返回的b就是最大公约数
}
int main()
{
int x, y;
cin >> x >> y; // 输入两个整数
// 输出最简比例形式:
// 1. 计算最大公约数
// 2. 将x和y分别除以最大公约数
// 3. 输出简化后的比例
cout << x / gcd(x, y) << ":" << y / gcd(x, y);
return 0;
}
【运行结果】
1920 1080
16:9