当前位置: 首页 > news >正文

P3612 [USACO17JAN] Secret Cow Code S

题目描述

奶牛们正在实验秘密代码,并设计了一种方法用于生成无限长度的字符串,作为他们代码的一部分。

给定一个字符串 s,令 F(s) 为 s 后接 s 向右“旋转”一个字符的结果(在右旋转中,s 的最后一个字符旋转并成为新的第一个字符)。给定初始字符串 s,奶牛们通过重复应用 F 来构建他们的无限长度代码字符串;因此每一步都会使当前字符串的长度翻倍。

给定初始字符串和一个索引 N,请帮助奶牛计算无限代码字符串中第 N 个位置的字符。

输入格式

输入由一行组成,包含一个字符串和 N。字符串最多由 30 个大写字母组成,且 N≤1018。

请注意,N 可能太大,无法放入标准的 32 位整数中,因此你可能需要使用 64 位整数类型(例如,C/C++ 中的 "long long")。

输出格式

请输出从初始字符串构建的无限代码字符串的第 N 个字符。第一个字符的位置为 N=1。

显示翻译

题意翻译

输入输出样例

输入 #1复制

COW 8

输出 #1复制

C

说明/提示

在这个例子中,初始字符串 COW 按以下方式扩展:

COW -> COWWCO -> COWWCOOCOWWC

import java.io.*;public class Main {static char[] S;static long L;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] sp = br.readLine().split(" ");S = sp[0].toCharArray();L = S.length;long N = Long.parseLong(sp[1]);System.out.println(f(N));}static char f(long pos) {long len = L;                 // 当前段长度while (len < pos) len <<= 1;  // 找到最小的 len >= pos// 从最大段倒推while (len > L) {len >>= 1;        // 前半段长if (pos == len + 1) {       // 后半段第一个 → 前一轮末尾pos = len; } else if (pos > len + 1) { // 后半段其余 → 映射到前一轮pos -= len + 1;}}return S[(int) (pos - 1)];    // 回到初始串}
}

S[(int)(pos - 1)]:

  • 算法里 pos 一直是 1-base,pos - 1 得到 0-base 索引

  • 强制 (int) 是因为 poslong,而数组下标必须是 int

http://www.dtcms.com/a/529500.html

相关文章:

  • 07数据分析:使用 PromQL 进行查询与分析
  • 物流网站哪个好自建网站和第三方平台的区别
  • 哪里有网站建设官网花果园网站建设
  • 网站系统android开发需要学什么
  • 网站建设互联网络营销师资格证
  • 佛山外贸网站设计沃尔玛超市
  • 做报价在哪个网站询价在线制作海报免费
  • 深圳网站建设服务诚信网站体系建设工作
  • 【释义】泛在化
  • 人工智能与生物医药融合六大创新思路
  • 十堰优化网站哪家好上海有几个区几个县
  • 广东哪里网站建设如何增加网站关键词库
  • 现代农业建设 乡网站dw做的网站如何用手机看
  • 天津中小企业网站建设厦门营销网站建设公司
  • 网站seo内部优化在线视频网站如何制作
  • 魔力宝贝归来【免虚拟机,免架】高爆版
  • 襄阳专业做网站网站快速排名的方法
  • stack和queue的介绍
  • IOT项目——电源入门系列-第二章
  • 网站设计论文html永康网站优化
  • 数据预处理方法
  • 网站哪个公司做的比较好企业网站怎么做省钱
  • 《信息系统项目管理师》案例分析题及解析模拟题6
  • 网站重新设计wordpress开发投稿
  • CLIP:多模态大模型的基石
  • 手把手做网站网站平台建设需要多少钱
  • 计算机组成原理C,静态RAM和动态RAM的区别
  • Java基础 与运算
  • LLMs之Deployment:guidellm的简介、安装和使用方法、案例应用之详细攻略
  • 设计网站软件开发个人永久免费自助建站