zoukankan      html  css  js  c++  java
  • 9.2练习题2 汪老师玩卡片 题解

    题目出处:洛谷 P2192

    题目描述

    汪老师得到了一些卡片,这些卡片上标有数字0或5。现在他可以选择其中一些卡片排成一列,使得排出的一列数字组成的数最大,且满足被90整除这个条件。同时这个数不能含有前导0,即0不能作为这串数的首位。如果不能排出这样的数,输出“-1”。

    输入格式

    第一行,卡片的个数 (n(1 lt n le 1000))
    第二行,分别给出了这n个数(只能为数字5或0)。

    输出格式

    仅一行,如果可以排出,则输出这个数。否则输出“-1”。

    样例输入1

    4
    5 0 5 0
    

    样例输出1

    0
    

    样例输入2

    11
    5 5 5 5 5 5 5 5 0 5 5
    

    样例输出2

    5555555550
    

    题目分析

    这道题目是一道比较基础的模拟题。
    首先,我们能够使用的数字只有 (0)(5) ,并且还要求组成的数字能够被 (9) 整除。
    这就要求我们至少有一个 (0) ,以及 (9) 的倍数个 (5)
    所以我们开两个变量:

    • 变量 (c0) 用于记录汪老师拥有的卡片 (0) 的数量;
    • 变量 (c5) 用于记录汪老师拥有的卡片 (5) 的数量。

    这两个数值只需要在输入的时候进行一下统计就可以了。
    然后我们需要根据 (c0)(c5) 来进行统计。

    • 如果 (c0 = 0) ,则直接输出“-1”;
    • 如果 (c0 gt 0)(c5 < 9) ,则直接输出“0”;
    • 否则,我们令 (k)(c5) 整除 (9) 的结果,我们先循环 (k) 次,每次输出9个连续的“555555555”,然后循环 (c0) 次,每次输出一个“0”。

    实现代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    int n, c0, c5, a;
    int main() {
        cin >> n;
        while (n --) {
            cin >> a;
            (a == 0) ? (c0 ++) : (c5 ++);
        }
        c5 /= 9;
        if (!c0) cout << "-1";
        else if (!c5) cout << "0";
        else {
            while (c5 --) cout << "555555555";
            while (c0 --) cout << "0";
        }
        return 0;
    }
    
    
  • 相关阅读:
    青岛公交查询
    Windows8应用生命周期 Metro Style Apps Lifecycle
    Mac下发布Qt应用程序
    Git命令笔记本
    IOS中 自定义访问用户Location时的提示信息
    使用OpenSSL发送IOS推送通知 Apple Push Notification
    最简单的iOS MapView标记点纠偏的方法
    罗技产品序列号追溯条码扫描系统
    展厅样品条形码报价管理系统
    Denso条码采集器程序开发2编译环境的搭建
  • 原文地址:https://www.cnblogs.com/zifeiynoip/p/11524130.html
Copyright © 2011-2022 走看看