牛客网第4场A

链接:https://www.nowcoder.com/acm/contest/142/A
来源:牛客网题目描述 
A ternary string is a sequence of digits, where each digit is either 0, 1, or 2.
Chiaki has a ternary string s which can self-reproduce. Every second, a digit 0 is inserted after every 1 in the string, and then a digit 1 is inserted after every 2 in the string, and finally the first character will disappear.
For example, ``212'' will become ``11021'' after one second, and become ``01002110'' after another second.
Chiaki would like to know the number of seconds needed until the string become an empty string. As the answer could be very large, she only needs the answer modulo (109 + 7).
输入描述:
There are multiple test cases. The first line of input is an integer T indicates the number of test cases. For each test case:
The first line contains a ternary string s (1 ≤ |s| ≤ 105).
It is guaranteed that the sum of all |s| does not exceed 2 x 106.
输出描述:
For each test case, output an integer denoting the answer. If the string never becomes empty, output -1 instead.
示例1
输入复制
3
000
012
22
输出复制
3
93
45

欧拉降幂且记录;

(1)如果在消除一个 0 前经过了 n 秒,那么消掉这个 0 需要 n + 1 秒。

(2)如果在消除一个 1 前经过了 n 秒,那么消掉这个 1 与其产生的所有数需要 (n + 1) * 2 秒。

(3)如果在消除一个 2 前经过了 n 秒,那么消掉这个 2 与其产生的所有数需要 (2 ^ (n + 1) - 1) * 3 秒。

 

#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<vector>
#include<map>
#include<string.h>
using namespace std;
#define ll long long
map<ll,ll>mp;
char s[100000];
ll phi(ll x)
{if(mp[x]) return mp[x];ll temp=x;ll ans=x;if(x==1) return mp[1]=1;for(ll i=2;i*i<=x;i++){if(x%i==0){ans=ans/i*(i-1);while(x%i==0) x/=i;}}if(x>1) ans=ans/x*(x-1);return mp[temp]=ans;
}ll qsm(ll a,ll b,ll c)
{ll ret = 1;for (;b;b >>= 1,(a *= a)%=c)if (b & 1) (ret *= a)%=c;return ret;
}
ll solve(ll x,ll mod)
{if(x==0||mod==1)return 0;if(s[x]=='0'){return (1LL+solve(x-1,mod)+mod)%mod;}else if(s[x]=='1'){return (2*(solve(x-1,mod)+1)+mod)%mod;}else{ll ph=phi(mod);ll t=(solve(x-1,ph))%ph;return (qsm(2,t,mod)*6%mod-3+mod*3)%mod;}}
int main()
{int n;scanf("%d",&n);while(n--){scanf("%s",s+1);printf("%lld\n",solve(strlen(s+1),1e9+7));}return 0;
}

 

 

转载于:https://www.cnblogs.com/2014slx/p/9389594.html

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

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

相关文章

全国计算机等级考试题库二级C操作题100套(第34套)

第34套&#xff1a; 用筛选法可得到2&#xff5e;n&#xff08;n<10000&#xff09;之间的所有素数&#xff0c;方法是&#xff1a;首先从素数2开始&#xff0c;将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0)&#xff1b;接着从数 表中找下一个非0数&#xff…

谈谈NiTE 2手部跟踪在彩色图像上的显示

主要内容&#xff1a; NiTE2手部跟踪流程代码演示总结一、NiTE2手部跟踪流程 我自己都感觉到天天在重复着相同的代码&#xff0c;但我觉得没什么不好的&#xff0c;对于新东西的学习只有在重复再重复的过程中&#xff0c;才能积累经验&#xff0c;较少犯“低级错误”的几率&…

全国计算机等级考试题库二级C操作题100套(第35套)

第35套&#xff1a; 给定程序中&#xff0c;函数fun的功能是建立一个NN的矩阵。 矩阵元素的构成规律是&#xff1a;最外层元素的值全部为1&#xff1b;从外向内第2层元素的值全部为2&#xff1b;第3层元素的值 全部为3&#xff0c;…依次类推。例如&#xff0c;若N5&#xff0…

一些杂想

一些杂想 Django 笔记 &#xff08;目前个人认为&#xff0c;Django 还是应该使用 Django1.11版本&#xff0c;稳定长期支持到2020年&#xff0c;兼容性也好。&#xff09; Django MTV 构架下的网站开发步骤&#xff1a; 使用 virtualenv 创建并启用虚拟机环境。使用 pip insta…

java 应用是单机集群_【架构】Tomcat单机部署多应用Windows

Tomcat单机部署多应用-Windows1、添加新增的Tomcat相关环境变量CATALINA_BASE C:\tomcat1CATALINA_HOME C:\tomcat1TOMCAT_HOME C:\tomcat1CATALINA_2_BASE C:\tomcat2CATALINA_2_HOME C:\tomcat2TOMCAT_2_HOME C:\tomcat22、第一个tomcat不变3、打开第二个tomcat目录bin…

java long类型转string_JavaSE的学习——数据类型

数据类型分为基本数据类型和引用数据类型两大类在下面数据类型的介绍中只会介绍8种基本数据类型和引用数据类型中的类类型中的一个类String基本数据类型1. 计算机中的存储单位8bit 1byte 1024byte 1KB 1024KB 1M1024M 1GB1024GB 1T2. 整数型数据byte short int long1.long…

DWTagList

2019独角兽企业重金招聘Python工程师标准>>> DWTagList 根据给定的 NSArray 数组来创建标签列表&#xff0c;可自定义字体、颜色和其他属性。 转载:http://www.adobex.com/ios/source/details/00000820.htm 转载于:https://my.oschina.net/u/868244/blog/106245

全国计算机等级考试题库二级C操作题100套(第36套)

第36套&#xff1a; 给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数, 存放在形参n所指的存储单元中。 请在程序的下划线处填入正确的内容并把下划线删除&#xff0c;使程序得出正确的结果。 注意&#xff1a;源程序存放在考生文件夹下的BLANK1.C中。 不得…

爬虫(爬虫原理与数据抓取)

通用爬虫和聚焦爬虫 根据使用场景&#xff0c;网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分。主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的…

java 注解数组初始化_Java 之 注解的定义

一、元注解1、元注解概述元注解&#xff1a;用于描述注解的注解2、常用的元注解(1)Target&#xff1a;描述注解能够作用的位置Target 里面是一个 ElementType[] value() 的枚举数组&#xff0c;这个数组里面指定了10个常量对象。源码&#xff1a;1 public enumElementType {2 /…

python is beautiful_Python list 和 str 互转

一、list转字符串 命令&#xff1a;.join(list) 其中&#xff0c;引号中是字符之间的分割符&#xff0c;如“,”&#xff0c;“;”&#xff0c;“\t”等等 如&#xff1a; list [1, 2, 3, 4, 5] .join(list) 结果即为&#xff1a;12345 ,.join(list) 结果即为&#xff1a;1,2,…

SQL Server Insert 操作效率(堆表 VS 聚集索引表)

“SQL Server的Insert操作在堆表或者聚集索引表的时候&#xff0c;哪个效率更高&#xff1f;为什么高&#xff1f;” 之前有同事问过我这个问题&#xff0c;为了确保日志库的记录效率&#xff0c;于是我做了简单测试了&#xff0c;首先要先强调几点概念&#xff1a; 堆表&#…

React 回忆录(三)使用 React 渲染界面

Hi 各位&#xff0c;欢迎来到 React 回忆录&#xff01;? 在上一章中&#xff0c;我介绍了 React 框架的“五大特点”&#xff1a;虚拟DOM&#xff0c;组件化&#xff0c;声明式代码&#xff0c;单向数据流和纯粹的 JavaScript 语法。在本章中&#xff0c;我们将谈到 React 是…

linux java javac版本_linux下java 和 javac version 不一致问题

centos下我新安装了个jdk1.7的版本 &#xff0c;vi profile 之后 java -version 是新版本&#xff0c;想在看看javac -version 发现还是1.6的之前安装了1.6的 那好咱就卸载他查找Java 版本信息rpm -qa|grep java返回如下信息 xorg-x11-drv-savage-2.1.1-5.fc6avahi-glib-0.6.16…

electron 打包_Vue3+Electron整合方式

教程源码&#xff1a;nofacer/vue3-electron​github.com之前写过一篇文章Vue结合Electron构建跨平台应用&#xff08;TDD&#xff09;。当时的方法后来发现了一个问题&#xff0c;就是打包后的应用拿到其他机子上没法用&#xff0c;原因在于index.html的地址是个绝对路径&…

全国计算机等级考试题库二级C操作题100套(第37套)

第37套&#xff1a; 给定程序中&#xff0c;函数fun的功能是:在形参ss所指字符串数组中&#xff0c;查找含有形参substr所指子串的所有字符串并输出&#xff0c;若没找到则输出相应信息。ss所指字符串数组中共有N个字符串&#xff0c;且串长小于M。程序中库函数strstr(s1, s2)…

ABAP编程中对内表的定义,后面接一个OCCURS (n)是代表什么意思。

对内表的定义&#xff0c;我只说下有没occurs的区别。**DATA: BEGIN OF itab OCCURS 0,* matnr LIKE mara-matnr,* maktx LIKE makt-maktx,* END OF itab.**SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE itab .**LOOP AT itab.* WRITE:/* itab-matnr,* itab-m…

Linux按照时间顺序列出文件

按照递增时间顺序列出所有文件 ls -ltr -l表示列出长串数据&#xff0c;-t表示按照时间顺序&#xff0c;-r表示将排序的结果反向输出 按照时间递减的顺序列出所有文件 ls -lt 转载于:https://www.cnblogs.com/yongjieShi/p/9395932.html

java释放list_Java中List集合中subList的坑

参考博主http://blog.csdn.net/xuweilinjijis/article/details/9037635先看List接口subList方法的javadocThe returned list is backed by this list, so non-structural* changes in the returned list are reflected in this list, and vice-versa.* The returned list suppo…

全国计算机等级考试题库二级C操作题100套(第38套)

第38套&#xff1a; 函数fun的功能是&#xff1a;把形参a所指数组中的奇数按原顺序依次存放到a[0]、 a[1]、a[2]、……中&#xff0c;把偶数从数组中删除&#xff0c;奇数个数通过函数值返回。例如&#xff1a;若a所指数组中的数据最初排列为&#xff1a;9、1、4、2、3、6、5、…