首页 > 其他分享 >CF1714E Add Modulo 10

CF1714E Add Modulo 10

时间:2023-11-22 21:46:04浏览次数:39  
标签:10 26 Modulo 58 54 52 Add 86

CF1714E Add Modulo 10

题目传送门

代码一遍AC真的很爽,样例都是一遍过

题意

每个测试点含多组测试数据。

对于每组测试数据

第1行 一个整数 $n$ ,表示该数据个数

第2行 $n$ 个整数,你需要判断是否符合题意的数据

对每组数据,你可以对其作若干次(可以为零)如下操作:

选取数据中的一个数 $a_i$ 将其替换为 $a_i + (a_i \bmod 10)$

问经过若干次变换后,该组数据能否全部相同

思路

首先让我们写段代码来枚举10个个位数在进行$a_i+(a_i \bmod 10)$后的情况

将其相同的数字对齐得到:

 0: [0 for ever]
 1: 2 4 8 16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102 
 2:   4 8 16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102 
 3:        6 12 14 18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 
 4:     8 16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102 
 5: 10 
 6:          12 14 18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 
 7:             14 18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 
 9:                18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 

我们会发现,一些数字进行若干次操作后会变得相同,所以将其归类:

 3: 6 12 14 18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 
 6:   12 14 18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 
 7:      14 18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 
 9:         18 26 32 34 38 46 52 54 58 66 72 74 78 86 92 94 98 106 

 0: [ 0 for ever]
 5: [10 for ever]

 1: 2 4 8 16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102
 2:   4 8 16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102 
 4:     8 16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102 
 8:       16 22 24 28 36 42 44 48 56 62 64 68 76 82 84 88 96 102 

我们可以发现,同一个类别内的数一定可以通过若干次操作变得相等,但是不同类别的数字就不行

那,该怎么判断类别呢?

通过观察,可以发现第一类中,当十位为奇数,那么只要个位不是6的偶数就一定存在;而当十位为偶数,则只有个位为6的数存在

相对的,在第三类,十位为偶数时,只要个位不是6的偶数就一定存在;十位为奇数时,只存在末尾是6的偶数

可是,这样只能判断偶数属于哪一类,对奇数没用,该怎么办呢?

不难发现,奇数操作一次后一定是偶数,所以只需要再判断奇数操作后变为的偶数存在于哪一类即可

最终,只需要统计出三类对应的数对应的出现次数就好

代码

如果有两个及以上的类别都出现了,那么说明是变不成的

需要注意,即使只出现了第二类,但是它们不管怎么变,最多只能$+5$,所以需要再进行一下特判

#include<bits/stdc++.h>
using namespace std;

const int maxn=2e5+10;
int a[maxn];
int n;
int kind1,kind2,kind3;

void run()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]+=(a[i]%2==0?0:a[i]%10);
        if(a[i]%10==0) kind2++;
        else if(((a[i]%100)/10)%2==1) 
        {
            if(a[i]%10==6) kind3++;
            else kind1++;
        }else
        {
            if(a[i]%10==6) kind1++;
            else kind3++;
        }
    }
    
    int l=(kind1>0)+(kind2>0)+(kind3>0);
    if(l==2 || l==3) cout<<"NO";
    else
    {
        if(kind1>0 || kind3>0) cout<<"YES";
        else
        {
            int num=a[1],find=1;
            for(int i=1;i<=n;i++)
            {
                if(a[i]!=num)
                {
                    find=0;
                    break;
                }
            }
            cout<<(find?"YES":"NO");
        }
    }
    cout<<endl;
}

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        kind1=kind2=kind3=0;
        run();
    }
    return 0;
}

标签:10,26,Modulo,58,54,52,Add,86
From: https://www.cnblogs.com/lyk2010/p/17850358.html

相关文章

  • Mother bear [UVA10945]
    蒟蒻的首篇题解——Motherbear题目大意:一只笨熊只可以理解回文的句子,要你判断句子去掉标点符号、空格后是否回文。思路:1、利用getline()读入整行字符串,并且处理成只有小写/大写字母和数字的字符串。(样例处理结果对照详见①~②分割线内)2、读取到一半必定会出现倒着的(针对于......
  • IBM大型新能源行业供应链管理及产销协同管理规划报告 P108
    本人在四大咨询机构从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.该PPT共107页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击下方。本文来源于网络,侵权立删。新能源行业供应链管理诊断是......
  • 第10次-创建一个在线网站(未完待续版)
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站......
  • 159.102 C++问题求解
    一家生产纽扣的工厂给了你一份合同。工厂识别损坏的按钮,使其不会提供给商店。这家工厂有一台可以拍摄纽扣的照片。这台相机只能用黑白(没有颜色),分辨率不是很高很好,但这不是问题。你的工作是编写一个C++程序,识别照片中任何损坏的按钮。你需要生成一个图像,在每个按钮周围显示一个框。......
  • Pandas实现这列股票代码中10-12之间的股票筛出来
    大家好,我是皮皮。一、前言前几天在Python白银交流群【YVONNE......
  • # yyds干货盘点 # Pandas实现这列股票代码中10-12之间的股票筛出来
    大家好,我是皮皮。一、前言前几天在Python白银交流群【YVONNE......
  • 清华发布LCM-LoRA模型:图像生成速度提升10倍,下载量破20万
    LCMLoRA模型概述LCMLoRA模型是一种创新的深度学习模型,它通过特殊的技术手段,显著提高了图像生成的效率。这种模型特别适用于需要快速生成高质量图像的场景,如艺术创作、实时图像处理等。技术实现LCMLoRA模型的核心在于其独特的LoRA(Low-RankAdaptation)技术。这种技术的基本原理是......
  • CSC1001 编程方法描述
    您应该在.py文件中为每个问题编写代码(请使用问题名称,例如,对于问题1,将其命名为q1.py)。请将所有.py文件打包到一个.zip文件,使用您的学生ID命名(例如,如果您的学生标识是123456,则文件应命名为123456.zip),然后通过Blackboard提交.zip文件。还请编写一个文本文件,其中提供了如何为每个代......
  • mujoco安装报错:mujoco_py/gl/eglplatform.h:99:10: fatal error: X11/Xlib.h: 没有那
     安装mujoco报错:mujoco_py/gl/eglplatform.h:99:10:fatalerror:X11/Xlib.h:没有那个文件或目录 修复方法:sudoaptinstalllibx11-dev   ......
  • 基于增强型ARM Cortex M0+内核平台的MSPM0G1106TRHBR、MSPM0G1507SRHBR混合信号微控制
    一、MSPM0G1106TRHBR 基于增强型Arm®Cortex®-M0+32位内核,具有64KB闪存、80MHz频率MSPM0G110x微控制器(MCU)属于MSP高度集成的超低功耗32位MCU系列,该MCU系列基于增强型Arm®Cortex®-M0+32位内核平台,工作频率最高可达80MHz。这些成本优化型MCU提供高性能模......