目录

  • 描述
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例
      • 样例输入 1
      • 样例输出 1
      • 样例解释 1
  • 题解

描述

题目描述

果果想出两个令⼈窒息的操作,给你⼀个字符串 以及两个整数 和 。其中字符串 的⻓度为偶数, 且仅由数字0到9组成。

你可以在s上按任意顺序多次执⾏下⾯两个操作之⼀:

操作1:将a加到s中所有下标为奇数的元素上(下标从0开始)。数字⼀旦超过9就会变成0, 如此循环往复。例如,s=“3456"且a=5,则执⾏此操作后s变成"3951”。

操作2将s向右轮转b位。例如,s=“3456"且b=1,则执⾏此操作后s变成"6345” 。

请你帮果果求出在s上执⾏上述操作任意次后可以得到的字典序最⼩的字符串。

所谓字典序,⽐如两个字符串abcdef,bcd从第⼀个字符开始⽐较,第⼀个字符不相等a<b所以第⼀ 个字典序较⼩。若第⼀个相等,继续⽐较后续字符⽐如hi,history若其中⼀个没有后续的字符了,则 较短的串字典序较⼩。

输入格式

输出的第⼀⾏包括⼀个字符串s。 第⼆⾏包括两个正整数a,b。

输出格式

输出只有⼀⾏,表示你的答案。

样例

样例输入 1

5525

9 2

样例输出 1

2050

样例解释 1

初始:5525

操作2:2555

操作1:2454

操作1:2353

操作2:5323

操作1:5222

操作1:5121

操作2:2151

操作1:2050

题解

首先,对于操作1,因为我们要保证字典序最小,所以尽量把能改变的所有数中最靠前的数改变为零,设最靠前的数为n,我们依次枚举n,(n+a)%10,…,(n+9*a)%10,然后在里面找到最小的即可,再通过其改变来将所有的可以改变的数都改变。

然后,针对操作2,我们把它所有的移动情况全部枚举出来

根据裴蜀定理的推论(如上),可以确定移动过后的情况数最多有n-1种,再加上原来的数列,共有n种情况,开一个二维数组来存储所有情况,代码如下:

while(t!=0){++tot;  //tot为所有情况总数for(int i=0;i<n;i++){a[tot][i]=a[1][(i+t)%n];}t+=m;t%=n;}

但是,如果移动的次数为2的倍数,则原来的偶数位就永远是偶数位,永远无法进行操作1,所以进行分类讨论;
代码如下:

#include<bits/stdc++.h>
using namespace std;int a[1005][1005];
bool f[1005];int main(){char s[1005];cin>>s;int n=strlen(s);int m,x;scanf("%d%d",&x,&m);for(int i=0;i<n;i++){a[1][i]=s[i]-'0';}m%=n;if(m==0){int sum=a[1][1];int id=0;int now=sum;for(int i=1;i<=9;i++){int nownow=sum+x*i;if(nownow%10<now){now=nownow%10;id=i;}}for(int i=0;i<n;i++){if(i%2==1){printf("%d",(a[1][i]+x*id)%10);}elseprintf("%d",a[1][i]);}return 0;}int t=m;int tot=1;while(t!=0){++tot;for(int i=0;i<n;i++){a[tot][i]=a[1][(i+t)%n];}t+=m;t%=n;}if(m%2==0){for(int i=1;i<=tot;i++){int sum=a[i][1];int id=0;int now=sum;for(int j=0;j<=9;j++){int nownow=sum+x*j;if(nownow%10<now){now=nownow%10;id=j;}}for(int j=0;j<n;j++){if(j%2==1){a[i][j]=(a[i][j]+x*id)%10;}}}int nowmin=1;for(int j=0;j<n;j++){for(int i=1;i<=tot;i++){if(f[i])continue;if(a[i][j]>a[nowmin][j]){f[i]=1;}if(a[i][j]<a[nowmin][j]){f[nowmin]=1;nowmin=i;}}}for(int i=0;i<n;i++){printf("%d",a[nowmin][i]);}return 0;}for(int i=1;i<=tot;i++){int now_x=a[i][1];int id_x=0;int now_y=a[i][0];int id_y=0;for(int j=0;j<=9;j++){int nownow=a[i][1]+x*j;if(nownow%10<now_x){now_x=nownow%10;id_x=j;}nownow=a[i][0]+x*j;if(nownow%10<now_y){now_y=nownow%10;id_y=j;}}for(int j=0;j<n;j++){if(j%2==1){a[i][j]=(a[i][j]+x*id_x)%10;}else{a[i][j]=(a[i][j]+x*id_y)%10;}}}int nowmin=1;for(int j=0;j<n;j++){for(int i=1;i<=tot;i++){if(f[i])continue;if(a[i][j]>a[nowmin][j]){f[i]=1;}if(a[i][j]<a[nowmin][j]){f[nowmin]=1;nowmin=i;}}}for(int i=0;i<n;i++){printf("%d",a[nowmin][i]);}return 0;
}
/*
43987654
7 3
*/

To_Heart—题解——令人窒息的操作相关推荐

  1. zabbix源码安装 令人窒息的操作

    一.简介 zabbix-server主要分为2部分: zabbix程序 程序根据客户端的监控项,从客户端获取数据并写入到数据库,再根据触发器/动作等配置进行操作. 展示页面 使用php编写,php脚本 ...

  2. 某社交 App 涉黄被下架,真相令人窒息

    最近见识了一个令人窒息的事情. 某社交 App,为了让另一个竞品 App 下架,跑去竞品 App 平台下发布涉黄信息,自己进行截图举报. 其中,一个是 Soul,另一个是 Uki,双方都主打匿名声音社 ...

  3. 儿童手表还能这么用?定位功能防出轨 网友:这令人窒息的爱情

    小米手表功能曝光后,有网友觉得其没有拍照.视频功能,还比不上小天才电话手表,人家能打电话,还能视频拍照. 要说,现在的儿童智能手表功能的确很强大,通话.视频.付款.定位,手机拥有的大部分功能在儿童智能 ...

  4. android 天气 小众软件,杂货铺 篇六:习惯了手机自带的日历天气类App,来点新鲜感?这些App美到令人窒息!...

    杂货铺 篇六:习惯了手机自带的日历天气类App,来点新鲜感?这些App美到令人窒息! 2019-01-26 18:18:27 4点赞 8收藏 1评论 习惯了手机自带的日历天气类App,来点新鲜感?这些 ...

  5. 如何跳出令人窒息的职场死循环

    你的工作和生活状态是这样的吗? 上班,领导派活,编码(可能是任务 X).测试(可能是任务 Y).解 Bug (可能是任务 Z).开会(可能是任务 W),下班,打游戏或追剧或逛街,周末出去 HIGH 一 ...

  6. 来自世界各地,美得令人窒息的树木

    来自世界各地,美得令人窒息的树木,加拿大125岁的杜鹃花"树",能开出满满的花 日本144岁的老紫藤树:覆盖1990平方米 新西兰一处风吹树斜奇景:刚好生长在新西兰南端的边坡上,不 ...

  7. 模拟黑洞图像_nasa绘制黑洞图像(这次我终于看到了! NASA模拟的黑洞高清令人震惊的画面,令人窒息!)...

    nasa绘制黑洞图像(这次我终于看到了! NASA模拟的黑洞高清令人震惊的画面,令人窒息!),哪吒游戏网给大家带来详细的nasa绘制黑洞图像(这次我终于看到了! NASA模拟的黑洞高清令人震惊的画面, ...

  8. 如何上传全国计算机考试的图片,操作令人窒息!报名计算机考试照片上传成逗比表情包...

    在网上预约英语四六级考试.计算机考试是多么正经的一件事啊,不过有人却在网上预约报名的时候,因为系统出现bug,遇到了哭笑不得的情况--今日,就有网友爆料称,段子一样的事情就在昨天发生了!她一个师兄报名 ...

  9. 计算机一级考试表情包,操作令人窒息!报名计算机考试照片上传成逗比表情包...

    在网上预约英语四六级考试.计算机考试是多么正经的一件事啊,不过有人却在网上预约报名的时候,因为系统出现bug,遇到了哭笑不得的情况--今日,就有网友爆料称,段子一样的事情就在昨天发生了!她一个师兄报名 ...

最新文章

  1. OpenCV Harris角点检测
  2. 学习深度学习需要哪些知识_您想了解的有关深度学习的所有知识
  3. 小心使用IOCP完成端口
  4. C语言实验报告册-20163a,c语言实验报告册-20163a.doc
  5. c#报错不实现接口成员_当接口和具体在不同的项目中时,c#-“无法实现接口成员”错误...
  6. 教你同时分析DPD多个单号的物流信息
  7. Adams_2019_x64
  8. 如何解决注塑成型中的毛边问题?
  9. 临床数据库挖掘系列3-手把手教你使用R语言对seer数据库清洗
  10. sql语句之delete
  11. python文本字词分割及词库云
  12. SSD202 移植 新屏幕
  13. 在Linux安装Kafka监控系统EFAK
  14. 基于距离传感器的I2C通信(一)
  15. 简单 4部 完成 android 二维码扫一扫功能(5分钟实现)
  16. 开发人员为何应该使用苹果电脑,兼Mac OS X
  17. R语言灰色关联分析法
  18. word中输入 千分之一 万分之一 符号
  19. [ACNOI2021]仙人掌
  20. 来,我教你怎么优雅删除数据

热门文章

  1. X-editable文档
  2. msys2及MinGW工具使用学习笔记
  3. 机器学习(聚类十)——谱聚类及代码实现
  4. c语言实现FIFO算法和LRU算法,C语言实现FIFO算法与LRU算法
  5. 正交变换最强总结笔记,解决每一个考研线代人的理解难关
  6. golang 超好用 json 解析包
  7. python实现一个简单的猜数游戏
  8. 离散数学考前复习:(五)图
  9. 项目管理:(四)项目范围管理
  10. 使用Weinre调试webapp