小红的循环移位

简介: 小红的循环移位

题目描述:小红拿到了一个数字串,她每次操作可以使得其向左循环移动一位。将串 s=s0 s1...sn−1s  向左循环移动一位,将得到串s1...sn−1s0。小红想知道,使得该数字串变成4的倍数,需要最少操作多少次?(可以包含前导零)

输入描述:一个数字串,长度不超过10510^5105

输出描述:如果无法达成目的,则输出-1。否则输出一个整数,代表最少的操作次数。

 

#include<iostream>
#include<string.h>
using namespace std;
const int N=1e5+5;
int main(){
char s[N];
int a[N],n;
  char c = getchar();
  while(c < '0' || c > '9')
    c = getchar();
  while(c >= '0' && c <= '9')
    a[++n] = (c - '0'),c = getchar();
  if(n == 1)
  {
    if(a[1] % 4)
    {
      cout << -1;
      return 0;
    }else{
      cout << 0;
      return 0;
    }
  }
  if((a[n - 1] * 10 + a[n]) % 4 == 0)
  {
    cout << 0;
    return 0;
  }
  if((a[n] * 10 + a[1]) % 4 == 0)
  {
    cout << 1;
    return 0;
  }
  for(int i = 1;i < n;i++) 
        if((a[i] * 10 + a[i + 1]) % 4 == 0)
  {
    cout << i + 1;
    return 0;
  }
  cout << -1;
  return 0;
}
  1. 首先定义了一些常量和变量:
  • const int N = 1e5 + 5;:用于存放输入字符串的最大长度。
  • char s[N];:定义一个字符数组来存放输入的字符串,但由于代码并未使用此数组,所以在此处可忽略。
  • int a[N];:定义一个整数数组用来存放读取到的每个字符转换成的整数值。
  • int n;:记录当前读取到的有效数字字符的数量。
  1. 使用getchar()逐个读取字符直到遇到第一个数字字符,并将其转换为整数值存入数组a[]中,同时更新计数器n
  2. 如果只读取到一个数字字符(n == 1),直接判断这个数字是否能被4整除,如果能,则输出0,否则输出-1。
  3. 接下来检查最后两位数字是否能被4整除,如果能,则输出0。
  4. 然后检查首位数字与末尾数字组合起来是否能被4整除,如果能,则输出1。
  5. 使用一个for循环遍历数组a[],检查每一对相邻的数字(a[i]a[i+1])是否能被4整除。如果找到满足条件的一对,则输出它们的位置i + 1,并结束程序。
  6. 如果经过以上所有步骤都没有找到符合条件的数对,则输出-1。
目录
相关文章
|
前端开发
HTML和CSS实现京东首页(html和css详解)(一)
HTML和CSS实现京东首页(html和css详解)
|
机器学习/深度学习 人工智能 BI
任务分配(dp)
任务分配(dp)
254 0
|
5天前
|
云安全 人工智能 自然语言处理
|
9天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
849 26
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
435 4
|
12天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
822 59
Meta SAM3开源:让图像分割,听懂你的话
|
2天前
|
弹性计算 网络协议 Linux
阿里云ECS云服务器详细新手购买流程步骤(图文详解)
新手怎么购买阿里云服务器ECS?今天出一期阿里云服务器ECS自定义购买流程:图文全解析,阿里云服务器ECS购买流程图解,自定义购买ECS的设置选项是最复杂的,以自定义购买云服务器ECS为例,包括付费类型、地域、网络及可用区、实例、镜像、系统盘、数据盘、公网IP、安全组及登录凭证详细设置教程:
172 114
|
5天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
376 19