P12949 [GCJ Farewell Round #1] ASCII Art 题解

P12949 [GCJ Farewell Round #1] ASCII Art 题解

题目传送门

我的博客

前言

倍增+二分

思路

  • 首先第一步,我们肯定要去求第 \(n\) 个字符位于第几个循环里。

  • 第二步,求第 \(n\) 个字符在这个循环里的位置。

  • 不难发现,解决第一步后,第二步也就迎刃而解了。

首先第一步。
\(k\) 个循环里面一共有 \(26k\) 个字符。那么前 \(k\) 次循环就一共有 \(\sum_{i=1}^k 26i\) 个字母。记为 \(f(i)\)

化简可得

\[f(i) = 26 \times \sum_{i=1}^k k \]

运用等差数列求和公式,可以进一步化简为

\[f(i) = 26 \times \frac{i \times (i+1)}{2} \]

\[f(i) = 13 \times i \times (i+1) \]

那么我们要求的 \(k\) 就需要满足

\[f(k-1) \leq n \leq f(k) \]

暴力计算显然会T,于是考虑倍增求出大致范围,再用二分确定具体 \(k\) 值。

第二步。

由第一步我们可以求出具体 \(k\) 值,于是第 \(k\) 次循环就有 \(26k\) 个字母。也就是说每个字母都出现 \(k\) 次且顺序出现。则第 \(k\) 次循环的起始位置就是 \(f(k-1)+1\)。假设 A 是第 \(0\) 个字母,那么第二步的答案就呼之欲出了——

\[\lfloor \frac{n-(f(k-1)+1)}{k} \rfloor \]

代码

#include<cstdio>
#include<iostream> 
using namespace std;
#define int long long 
inline int Read(){int x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=x*10+c-48;c=getchar();}return x*f;
}
inline void Write(int x){if(x<0){x=-x;putchar('-');}if(x>9) Write(x/10);putchar(x%10+'0');
}
int T,n;
int calc(int x){//计算f函数return 13*x*(x+1);
}
signed main(){T=Read();for(int o=1;o<=T;o++){//别忘了输出格式n=Read();int l=1,r=1,ans=0;while(calc(r-1)<n) l=r,r<<=1;//倍增求大体范围while(l<=r){//二分求具体范围int mid=(l+r)>>1;if(calc(mid)>=n) r=mid-1,ans=mid;else l=mid+1;} int st=calc(ans-1)+1;//起始位置ans=(n-st)/ans;//最终答案printf("Case #%lld: ",o);printf("%c\n",(char)ans+'A');//别忘了强制类型转换,否则输出为数字}return 0; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级专家/初阶架构师)的面试模拟

以下是我为您设计的模拟问题,完全基于您的简历内容,并模拟面试风格。第一部分:核心项目与架构深度(45分钟) 面试官意图:考察你对主导项目的架构理解深度、技术选型论证和权衡能力。 问题1:请详细介绍你从0到1主…

andriod集成x5内核

说明 因为手机自带的webview内核不统一,而且大都版本过低。 为了更好的体验,选择了x5。 虽然x5内置的chrome版本不是最新的,但是也是相当新了(截止目前为109)! x5内核的集成方式分为两种,在线版本(也叫公网版)…

为什么 VS Code 停止调试后 Python 进程还在?

1 问题现象 在使用 VS Code 调试 PyTorch 项目时,即使点击了“停止”按钮,通过 htop 或 ps aux 仍能看到大量类似如下的进程持续运行: /home/shi/miniconda3/envs/inpainting/bin/python ... torch/_inductor/compi…

Jenkins更换IP后,访问速度慢的问题解决.251103

到jenkins系统设置,修改参数为新ip地址,即可。.zstitle { width: 280px; text-align: center; font-size: 26px } .zsimgweixin { width: 280px } .zsimgali { width: 280px; padding: 0px 0px 50px 0px } .zsleft {…

Modbus协议地址模型详解学习笔记

有些事情,死了也要做。但有些事情,是死也不能做的1️⃣ 核心思想:地址 = 数据的“门牌号” 在上一篇笔记中,我们知道了Modbus有4个核心存储区:输出线圈 (0区) 输入线圈 (1区) 输入寄存器 (3区) 输出寄存器 (4区)但…

首次博客

第一次博客作业 一、自我介绍 102301216;我是懒洋洋;我的爱好是编程和篮球;我最喜欢麻辣香锅(海棠园二层);推荐歌曲《追梦赤子心》;想说的话:代码改变世界,努力成就未来。 二、思考 2.1 初入大学时对计算机专…

CF2161 Pinely Round 5 (Div. 1 + Div. 2) 游记(VP)

中途为和队友 vp 比赛中断,实际表现应该还行。省流 中途为和队友 vp 比赛中断,实际表现应该还行。11.3 内含剧透,请vp后再来。 不是题解!!!!!!! 赛时 A 题是一个人参加 div1 和 div2 的比赛,每次参加可以增…

以太网交换技术

1. 以太网协议最通用的通信协议标准2. 单播,广播,组播单播:mac地址:00:开头 广播:mac地址:FF:FF:FF:FF:FF:FF 组播:mac地址:01:开头 3. 以太网卡 4. 以太网帧格式

2025-11-03 NOIP 模拟赛1 赛后总结

很显然,我今年被 AC 自动机做局了。 前言 先推销一下自己写的游记。 其实今年 ST3 的 AC 自动机做法非常显然,我甚至想出来了一半。但我最后跑去想 T4 了。 与 300+pts 失之交臂。 你们不觉得 Trie 树和 Fail 指针是…

flex:1 什么意思

flex: 1 是 Flexbox 布局中的一个非常常用的属性,它用于 让一个元素在容器中占据剩余的空间。具体来说,flex: 1 是 flex-grow, flex-shrink, 和 flex-basis 的简写。 解释 flex: 1 的含义:flex-grow: 1:元素将会扩…

以销定采是什么?为什么越来越重要?

我这几年一直在帮制造业企业做数字化项目,其中一个变化很明显——越来越多老板开始主动提“以销定采”这个词。 有趣的是,这个词很多人挂在嘴上, 但真要问一句: “你们现在是怎么以销定采的?” 十个里有八个会愣一…

2025年优质少儿编程机构揭秘:提供国家等级测评+优质的课程体系+一站式赛考服务!

据中国教育学会最新统计数据显示,2025年中国少儿编程学员规模突破500万人,同比增长20%,但调查显示,72%的家长在选择编程学习机构时面临“课程质量参差不齐”、“教师资质难辨”、“学员案例夸大”等核心痛点。数据…

Modbus协议功能码详解学习笔记

混吃等死,小富即安,飞黄腾达,是因为各有各的缘法,未必有高下之分。1️⃣ 核心思想:通信 = 数据交互 + 行为指令 在上一篇笔记里,我们知道了:通信的本质是数据交互 —— 设备之间要交换数据。但光有“数据”还不…

议论文素材分类整理

目录 I.「名人」分类(按时代顺序)古代专题 魏晋风度 专题 唐宋八大家近代史专题 革命先烈 专题 新文化运动现代史专题 专题 改革开放歪果仁II.「名言」分类古诗文 近现代 外国III.「tag」分类家国情怀(爱国)民族英…

使用WSL挂载U盘及SD卡外设的方案

使用WSL挂载U盘及SD卡外设的方案今天在学习linux驱动开发的时候,因为使用的是WSL,导致我的内存卡识别不到,无法烧录所用程序,下面是解决方案通过指令sudo mount -t drvfs F:\ ./mnt/f(SD卡格式为FAT32),可以将对…

ESP32 I2C通信

I2C简述 两线式串行总线(SDA和SCL),半双工通信方式(支持来回通信,但每次只能一方通过) 通用函数:Wire.begin() 作为主机加入 Wire.begin(27) 只有一个参数的是作为从机加入 主机向从机发送数据 befinTransmission()开…

day06-自动出题工作流

今日内容 1 自动出题工作流 # 1 需求分析-传统出题需教师手动筛选知识点、设计题型、斟酌难度,耗时且繁琐。自动出题工作流可依据预设的知识点大纲,快速从题库中匹配对应内容,生成不同题型的题目。例如,从高中生物…

推送docker镜像到github

最近在给新生赛出题,服务器没法直接在本地build镜像,学了下怎么推送到github上然后再拉取到服务器在本地的docker上build一个镜像 docker build -t image_name .把镜像标记为ghcr.io的格式 docker tag image_name:la…

软件工程学习日志2025.11.3

软件设计模式 - 建造者模式实战 • 实验来源:石家庄铁道大学信息学院实验5 • 实验类型:模仿型实验 • 核心目标:深入理解建造者模式的原理并掌握实际应用 🔍 建造者模式核心理解 模式动机 建造者模式的核心价值在…

day05-智能换脸-12306出行建议-提取音频工作流

今日内容 1 智能换脸1.1 目标 # 1 用户上传两张人像,把其中一张人脸换到另一个人脸上----》Coze工作流-工作流、智能体---》使用代码调用---》借助于api-python代码、java,go。。。。-postman调用-后期做成软件-app,…