Jay的小迷弟-字符串溢出处理取模例题
#include<bits/stdc++.h>
const int maxn=1e8;//考虑到main外的定义数组需要用常数所以const
const int mod=1e9+7;
using namespace std;
char ch[maxn];
int J,a,y; //表示除了连续Jay以外,剩下三个对应的数量
int Jay; // 表示连续Jay的数量int main(){scanf("%s",ch);for(int i=0;i<strlen(ch);i++){if(i<strlen(ch)-2){if(ch[i]=='J'&&ch[i+1]=='a'&&ch[i+2]=='y'){ // 如果找到连续的Jay,那么只保存到Jay,而不会再分别单独保存。Jay++;i+=2;continue;}}if(ch[i]=='J') J++;else if(ch[i]=='a') a++;else if(ch[i]=='y') y++;}int ans=0;ans=min({J,a,y});if(ans==0&&Jay>0){Jay--;ans++;}for(int i=1;i<=Jay;i++){ans=2*ans%mod;//ATTENTION取模1e9+7操作}cout<<ans<<endl;
}
题目描述
窗外的麻雀,在电线杆上多嘴。你说这一句,很有夏天的感觉。
作为Jay的小迷弟,LakerV非常想去Jay的演唱会。
有一天,他意外地发现他买的《周杰伦的床边故事》上出现了一行神秘的字符串,并且这本书给了他一个神奇的魔法。
现在,只要他能得到最多的”Jay”的碎片数量,他就能获得Jay演唱会的门票了。但兴奋的他现在正在打包行李,无暇考虑如何得到最多的”Jay”的碎片数量,请聪明的你告诉他该怎么做。
“Jay”碎片拼凑的规则:
如果原字符串中有’J’,’a’,’y’这三个字符,那么LakerV可以用它们得到一个“Jay”的碎片。
魔法使用方法:
如果原字符串中的有一个未被使用过的且连续的“Jay”字符串,那么LakerV可以用它们对当前手上“Jay”的碎片数量*2。
输入描述:
输入一行字符串(字符串长度不超过108)(字符串不包含空格)(保证所有字符均为小写或大写字母)
输出描述:
输出一行整数,表示LakerV能获得的最多的“Jay”碎片的数量
示例1
输入
JayyaJ
JayyaJ
输出
2
2
说明
字符串总共有2个'J',2个'a',2个‘y'字符。最终LakerV手上有2个Jay碎片
示例2
输入
JayJayyaJ
JayJayyaJ
输出
4
说明
最后三个字符yaJ有'y','a',J'三个字符,可以组成一个Jay碎片。现在LakerV手上有一个Jay碎片。前面有两个连续的Jay字符串,所以LakerV可以两次对手上的Jay碎片数量*2。最终LakerV手上有1*2*2=4个Jay碎片。
示例3
输入
JayJ
JayJ
输出
1
说明
前面有三个字符'J','a','y'可以组成一个Jay碎片。最终LakerV手上有1个Jay碎片
备注:
1.魔法可以使用无限次
2.由于数可能非常大,所以需要对结果取模1e9+7
3.一开始LakerV手上”Jay”碎片的数量为0
4.未被使用过的且连续的“Jay”字符串如果用于魔法,那么该连续的“Jay”字符将不能用于得到一个“Jay”的碎片。
小知识点&人家的解法:
1、当使用scanf读入string时,需要这样:
string ch;
ch.resize(N);
scanf("%s",&ch[0]);
2、若要得出string类型的大小:
ch.length();
3、用char[]数组要比string快一些。#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9+7; const ll N = 1e8+10; char ch[N]; ll fpow(ll a,ll b){a%=mod;ll res = 1;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res;}//快速幂 int main() {scanf("%s",ch);//用scanf读取字符串的方式!ll sum = 0,a = 0,b = 0,c = 0;for (int i = 0; i <strlen(ch); i++){if(ch[i]=='J'&&ch[i+1]=='a'&&ch[i+2]=='y'&&i<strlen(ch)-2) sum++;//连着的Jayif(ch[i]=='J') a++;else if(ch[i]=='a') b++;else if(ch[i]=='y') c++;}ll total = min(min(a,b),c);//Jay总数ll sub = total-sum;//非连着的if(total==0) {printf("0");return 0;}//如果Jay为0else if(total==1) {printf("1");return 0;}//如果Jay为1else if(sum==0) {printf("%lld",total);return 0;}//如果没有连着的Jayelse{if(sub==0) sub = fpow(2,sum-1);//如果Jay全是连着的,那么sub就等于0了,需要特判else sub = sub*fpow(2,sum)%mod;//一般情况,别忘了再对mod取余!}printf("%lld",sub);return 0; }
Jay的小迷弟-字符串溢出处理取模例题相关推荐
- 那个马斯克的小迷弟开始讲深度学习了,课程视频+PPT已放出
晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 还记得那个MIT的AI科学家Lex Fridman吗?去年量子位曾经报道过,他用图像识别检测驾驶员行为,防止司机分神. 在Twitter上 ...
- java小迷弟_论身边有个小迷弟是什么感觉?
话说,本"文学巨匠"(小迷弟起的,不要打我,要打他挨着(ಡωಡ)hiahiahia)在前天的发文打卡时,一直不着边际的断句,断句,再断句,竟扬扬洒洒的写了一个可爱的数字,二百五十字 ...
- 实锤了,尤大妥妥的二次元迷弟 —— 聊聊 Vue 的进化历程
文章目录 实锤了,尤大妥妥的二次元迷弟 -- 聊聊 Vue 的进化历程 1. 前言 2. 库阶段 2.1 阶段发展 2.2 设计重点和特征 3. 框架阶段 3.1 阶段发展 3.2 设计重点 4. 通 ...
- 微信小程序业务-字符串生成二维码(weapp-qrcode)
微信小程序业务-字符串生成二维码(weapp-qrcode) 前言 邂逅weapp-qrcode 基本使用 详细参数 小程序组件中使用 image属性详解 想使用网络图片? 参考地址 前言 在小程序项 ...
- CSU2020期中测试模拟题1 问题E:小帅的字符串
问题 E: 小帅的字符串 题目描述 小帅有一个字符串,但是他接到一个老师的任务 1.如果字符串中的字符为大写字母,则转换为小写字母 2.如果字符串中的字符为小写字母,则直接输出 3.如果字符串中的字符 ...
- 《C语言进阶》小乐乐与字符串问题求解
目录 1.问题描述 2.问题求解 1.问题描述 描述 在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题.大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子串&qu ...
- 赛码网: 小明很喜欢打字,今天小红给了小明一个字符串。
题目 时间限制: 3000MS 内存限制: 589824KB 题目描述: 小明很喜欢打字,今天小红给了小明一个字符串. 这个字符串只包含大写和小写字母. 我们知道,按下CapsLock键,可以切换大小 ...
- 微信小程序JS字符串操作方法汇总
微信小程序JS字符串操作方法汇总 JS对字符串进行切割截取 1.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str="jpg|bmp|gif|ico| ...
- 小程序——切割字符串
小程序--切割字符串 做完项目整理了下小程序的字符串切割的常见几种方法 JS对字符串进行切割截取 1.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str=&qu ...
- 微信小程序JS字符串操作方法汇总,包含切割截取split,合并字符串join,连接字符串concat,返回指定字符串charAt,提取字符串substring等
微信小程序JS字符串操作方法汇总 JS对字符串进行切割截取 1.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str="jpg|bmp|gif|ico| ...
最新文章
- 策略梯度搜索:不使用搜索树的在线规划和专家迭代 | 技术头条
- 让我为你介绍一个神器:Chimee,一套可扩展的 H5 视频播放器解决方案
- 4.状态间的六种转换情况
- python上的数据库sqlite3——插入多行数据
- 带通 带阻滤波器 幅频响应_二阶有源带通滤波器设计
- mvc:default-servlet-handler标签的作用
- 【PMP】项目风险管理~重点知识
- linux mkdir绝对路径,linux学习(六)绝对路径、相对路径、cd、mkdir、rmdir、rm(示例代码)...
- JAVA对象集合转化为xml转换_xml转为Map集合以及对象转化为xml
- python程序在线更新_Python自动更新功能
- 3Eclipse的下载、安装、配置
- UOS应用商店deb打包的正确目录结构
- 服务器全息显示修改,全息显示
- uos系统安装教程_统一操作系统UOS下载&安装图文教程:尝鲜记(一)
- nginx中upstream的max_conns属性使用
- 电容滤波器和电感滤波器详解(工作原理,设计详解,典型电路图)
- FIFO读写时序理解——almost_empty、almost_full
- 洛谷刷题C语言:CRNE、CETIRI、PRASE
- 2021.8-机器学习地震信号去噪和到时识取环境配置
- 输了腾讯赢了阿里:凭借27天超强度复习Java核心知识+面试神技,三面阿里斩获P6岗offer(飞猪事业部)