周赛-一道签到题(kmp)
2015-08-10 09:28
218 查看
问题 A: 一道签到题
时间限制: 2 Sec 内存限制: 128 MB
提交: 61 解决: 26
[提交][状态][讨论版]
题目描述
我想说这是一道签到题,意思就是本次测试中最水的一道,不过我这样说你真的愿意相信我吗?哈哈,题目是这样的给你一下小数,然后请告诉我分别告诉我这个小数的循环节的循环次数、循环节以及循环节长度
输入
输入包括多组测试数据每组测试数据1行,包括一个小数,小数的长度不超过200,小数大于0小于100
输出
分别输出这个小数的循环节的长度、循环节以及循环次数,中间以一个空格间隔
样例输入
8.6987698769876987
0.666
5.1
样例输出
4 6987 4
1 6 3
1 1 1
时间限制: 2 Sec 内存限制: 128 MB
提交: 61 解决: 26
[提交][状态][讨论版]
题目描述
我想说这是一道签到题,意思就是本次测试中最水的一道,不过我这样说你真的愿意相信我吗?哈哈,题目是这样的给你一下小数,然后请告诉我分别告诉我这个小数的循环节的循环次数、循环节以及循环节长度
输入
输入包括多组测试数据每组测试数据1行,包括一个小数,小数的长度不超过200,小数大于0小于100
输出
分别输出这个小数的循环节的长度、循环节以及循环次数,中间以一个空格间隔
样例输入
8.6987698769876987
0.666
5.1
样例输出
4 6987 4
1 6 3
1 1 1
//hpuoj-周赛一:一道签到题 //题目大意:给你一列数字(浮点型)找出这列数中小数部分的循环节的循环次数、 //循环节以及循环节长度. //解题思路:首先,定义两个字符数组a[220]、b[220],这列数当成字符型处理; //由于只考虑小数部分,所以输入到 a数组之后直接把小数部分存到 b数组里。 // 接下来就用到KMP思想啦,定义getp()函数,用getp函数处理数组b. //本题主要利用getp()函数的性质: //[1]若 len%(len-p[len])等于0,那么这列字符串一定是周期串(就像循环小数) //[2]并且它的循环节的长度是 len-p[len],循环的次数是 len/(len-p[len]); //len:getp函数要处理的字符串的长度。 #include<stdio.h> #include<string.h> char a[220],b[220]; int p[100]; int len1,len2,length,cnt=0,k; void getp(){ int i=0,j=-1; p[i]=j; while(i<len2){ if(j==-1||b[i]==b[j]){ i++,j++; p[i]=j; } else j=p[j]; } } int main() { int j,f; while(scanf("%s",a)!=EOF){ memset(b,0,sizeof(b)); cnt=0;length=1;len2=0; len1=strlen(a);k=0; for(j=0;j<len1;j++){ if(a[j]=='.') { k=j+1;break;} } for(j=0;k<len1;k++,j++) b[j]=a[k]; len2=strlen(b); getp(); length=len2-p[len2]; cnt=len2/(length); printf("%d ",length); for(j=0;j<length;j++) printf("%c",b[j]); printf(" "); printf("%d\n",cnt); } return 0; }
相关文章推荐
- To enable integrated Windows authentication in Windows Vista/IIS 7
- python列表排序
- 若对中文编码一次在后台获取会出现中文乱码,编码两次就不会出现乱码
- 扩展欧几里得算法及其应用,逆元简介,中国剩余定理简介
- 计蒜客 难题题库 119 求解a到100的和
- A1037 Magic Coupon (25)
- ios animation暂停pause、恢复resume
- union和union all
- js数值转换
- Adding headers and footers to RecyclerView.
- 程序猿(媛)Shell脚本必备技能之一: 在Linux下如何自动备份mysql数据
- 51单片机流水灯的三种实现方法
- HDU 5366:The mook jong 递推
- 周赛-找句子(kmp)
- 深搜----N皇后问题
- HDU 5366:The mook jong 递推
- HDU 2844(Coins)多重背包
- SQL Server 2008数据库创建用户只读权限的两种方式
- ZOJ 3471 Most Powerful
- 计蒜客 难题题库 035 三角形的内点