博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu4333(扩展KMP)
阅读量:4950 次
发布时间:2019-06-11

本文共 2334 字,大约阅读时间需要 7 分钟。

看了扩展KMP的思路,然后来写这题,没有看别人怎么写的,自己写的想死,各种纠结的小细节,而且感觉这个东西自己想是很难想到。

终于知找到一道我用kmp无法解决的题目了,只知道用扩展kmp可以搞定。

Revolving Digits

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 1111    Accepted Submission(s): 319

Problem Description
One day Silence is interested in revolving the digits of a positive integer. In the revolving operation, he can put several last digits to the front of the integer. Of course, he can put all the digits to the front, so he will get the integer itself. For example, he can change 123 into 312, 231 and 123. Now he wanted to know how many different integers he can get that is less than the original integer, how many different integers he can get that is equal to the original integer and how many different integers he can get that is greater than the original integer. We will ensure that the original integer is positive and it has no leading zeros, but if we get an integer with some leading zeros by revolving the digits, we will regard the new integer as it has no leading zeros. For example, if the original integer is 104, we can get 410, 41 and 104.
 

 

Input
The first line of the input contains an integer T (1<=T<=50) which means the number of test cases. 
For each test cases, there is only one line that is the original integer N. we will ensure that N is an positive integer without leading zeros and N is less than 10^100000.
 

 

Output
For each test case, please output a line which is "Case X: L E G", X means the number of the test case. And L means the number of integers is less than N that we can get by revolving digits. E means the number of integers is equal to N. G means the number of integers is greater than N.
 

 

Sample Input
1 341
 

 

Sample Output
Case 1: 1 1 1
 

 

Source
 

 

Recommend
zhoujiaqi2010
 

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define INF 0x3fffffff#define N 100100//直接用kmp有问题char g[2*N];int len;int next[N];int sum[N]; //求每个点与目标串的最大前缀void build(){ memset(next,0,sizeof(next)); int a=0,p=0; next[0]=len; for(int i=1;i
g[ sum[i] ]) a++; else c++; } } printf("Case %d: %d %d %d\n",tt++,c,b,a); /* for(int i=0;i

 

转载于:https://www.cnblogs.com/chenhuan001/p/3222287.html

你可能感兴趣的文章
c++ operator
查看>>
apache 添加 ssl_module
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
getQueryString
查看>>
Servlet文件上传和下载的复习
查看>>
JavaScript笔记——正则表达式
查看>>
iOS PushMebaby
查看>>
网页消息类
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
日常一些出现bug的问题
查看>>
同时启动多个tomcat服务器
查看>>
怎么将iphone上的照片导出到本地文件
查看>>
Repeater+DataPagerSource分页
查看>>
模块化导出
查看>>
pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
查看>>
Sphinx 2.0.8 发布,全文搜索引擎 Installing Sphinx on Windows
查看>>
pod
查看>>
ResultSet 可滚动性和可更新性
查看>>
VS2013 C++代码运行问题
查看>>