学而思编程周赛语言基础组 | 2025年春第8周T1 屏幕分辨率

​欢迎大家订阅我的专栏:算法题解:C++与Python实现
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总贴:学而思编程周赛语言基础组 | 汇总


【题目描述】

屏幕分辨率是指纵横向上的像素点数,单位是px。屏幕分辨率确定计算机屏幕上显示多少信息的设置,以水平和垂直像素来衡量。就相同大小的屏幕而言,当屏幕分辨率低时(例如 640 ∗ 480 640*480 640480),在屏幕上显示的像素少,单个像素尺寸比较大。屏幕分辨率高时(例如 1920 ∗ 1080 1920*1080 19201080),在屏幕上显示的像素多,单个像素尺寸比较小。

我们能够根据对应的屏幕分辨率计算出屏幕的长宽比,例如:分辨率为 1920 ∗ 1080 1920*1080 19201080的屏幕,其长宽比为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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值