7_13_J题 Perfect Permutation(构造)
2016-09-04 15:41
239 查看
7_13_J题 Perfect Permutation
题意
要求构造一个由1~n组成的数列,,使每个位置上的数减去他所在位置的编号,可以构成一个0~n-1的集合。思路
好难啊,暴搜也不好找规律,看了解法之后才会做,知道结论以后反向验证很好证,但是正向好难想。。。结论:
当n=4k+2或4k+3时无解
当n=4k时,构造数列:2k+1, [4k ~ 3k+2], [3k ~ 2k+2], [2k ~ k+1], 3k+1, [k ~ 1]
当n=4k+1时,将4k时的数列第一项改成4k+1, 最后加一项2k+1
代码
#include <cstdio> using namespace std; const int maxn = 1e3+10; int num[maxn]; int main (){ int n; while(~scanf("%d", &n)){ if(n%4 !=0 && n%4 != 1) {puts("0"); continue;} int k = n/4; if(n%4) printf("%d ",n); else printf("%d ",n/2+1); for (int i = 4*k; i > 3*k+1;i--) printf("%d ",i); for (int i = 3*k; i > 2*k+1;i--) printf("%d ",i); for (int i = 2*k; i > 1*k; i--) printf("%d ",i); if(n-1) printf("%d ", 3* k + 1); for (int i = k; i > 0; i--) printf("%d ",i); if(n-1 && n%4) printf("%d ",n/2+1); puts(""); } return 0; }
相关文章推荐
- JavaScript学习小结
- Find the difference——Difficulty:Easy
- HTML中表格布局的优缺点
- angularjs实现文字上下无缝滚动特效代码
- (25)HTML5-初识jQuery
- POJ 2763 Housewife Wind 两种解法
- HTML5学习总结-01 开发环境和历史
- js 语法
- [leetcode]1. Two Sum -- JavaScript 代码
- JavaScript hasOwnProperty() 函数详解
- 点击图片选定区域跳转到连接地
- HTML语言及其背景
- 使用heroku和mLab部署项目(Nodejs)
- js操作数组
- css 列表属性详细总结
- HTML中的<pre>标签
- javascript in运算符
- html5开始之网页结构
- jQuery实现为LI列表前3行设置样式的方法【2种方法】
- js中typeof的用法