HDU4161 Iterated Difference(模拟 + 递推)
2016-05-11 17:42
309 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4161
题意很简单,题也很水,训练时是队友做的,赛后自己写了写感觉没啥难度。
题意:给定一串数字,每次变化时每个数字等于这个数字与下一个数字的差的绝对值,问经过几次转变这一串数字变为相等的数字。直接模拟就好。
题意很简单,题也很水,训练时是队友做的,赛后自己写了写感觉没啥难度。
题意:给定一串数字,每次变化时每个数字等于这个数字与下一个数字的差的绝对值,问经过几次转变这一串数字变为相等的数字。直接模拟就好。
#include<iostream> #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<string> using namespace std; const int maxn = 25; int a[maxn]; int main() { int n,kase = 0; while(scanf("%d",&n) == 1 && n) { memset(a, 0, sizeof(a)); int vis = 0; for(int i = 0; i < n; i++) { scanf("%d",&a[i]); if(i && a[i] == a[i-1]) vis++; } if(vis == n-1) { printf("Case %d: 0 iterations\n",++kase); continue; } else { int a0,sum = 0,flag = 0; a0 = a[0]; while(1) { if(sum == 1000) break; for(int i = 0; i < n; i++) { if(i == n-1) a[i] = abs(a[i] - a0); else a[i] = abs(a[i] - a[i+1]); } int ans = 0; for(int j = 0; j < n-1; j++) { if(a[j] == a[j+1]) ans++; } flag = 0; sum++; if(ans == n-1) { flag = 1; break; } else { a0 = a[0]; } } if(flag) printf("Case %d: %d iterations\n",++kase, sum); else printf("Case %d: not attained\n",++kase); } } return 0; }
相关文章推荐
- js 数组的深浅拷贝 js对象的深浅拷贝
- JSTL C标签 <c:if>判断参数是否为空
- jquery正则表达式基础辅助式理解
- AngularJS 表单验证小结
- JQuery replace 替换全部
- js之事件冒泡和事件捕获详细介绍
- jQuery each的简单使用
- JS 中 Array.slice() 和 Array.splice()方法
- css样式选择器
- 简单的转盘抽奖——CSS动画优化
- 本地ie版本大于7.0,MsHtml中get_userAgent获取UA为MSIE7
- 使用JQuery进行cookie操作
- jquery学习笔记
- JSTL中c:forEach循环里的值的substr操作及对String操作的常用API
- nodejs mkdirp
- CSS重设(reset)方法总结
- xStream完美转换XML、JSON
- 获取屏幕宽高
- maven项目无法使用jstl解决办法
- native 嵌套 h5 本地存储问题