ZOJ 3798 Abs Problem
关于绝对值的一个题 题意是从1-N N个不同的数中 选数 每次选一个数
第一次选的数记为a1 写到纸上记为b1 然后每次选的数ai bi=|ai-bi-1| 求bn的最小值以及最大值
可以找规律 (1,2特判) 当模4的值等于0或3时 最小值为0 否则为1
n-1模4的值为0或3时 最大值为n 否则为n-1
注意输出数字的顺序
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <string>
#define eps 1e-8
#define op operator
#define MOD 10009
#define MAXN 100100
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define FOV(i,a,b) for(int i=a;i>=b;i--)
#define REP(i,a,b) for(int i=a;i<b;i++)
#define REV(i,a,b) for(int i=a-1;i>=b;i--)
#define MEM(a,x) memset(a,x,sizeof a)
//#define ll __int64
using namespace std;
int a[500010];
int main()
{
//freopen("ceshi.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==1)
{
printf("1 1\n");
printf("1 1\n");
printf("1 1\n");
}
else if(n==2)
{
printf("1 1\n");
printf("1 2\n");
printf("2 1\n");
}
else
{
int mi,mx;
int x=n%4;
if(x==0||x==3)
mi=0;
else mi=1;
x=(n-1)%4;
if(x==0||x==3)
mx=n;
else mx=n-1;
printf("%d %d\n",mi,mx);
for(int i=n;i>=1;i--)
{
if(i==n) printf("%d",i);
else printf(" %d",i);
}
puts("");
for(int i=n-1;i>=1;i--)
{
if(i==n-1) printf("%d",i);
else printf(" %d",i);
}
printf(" %d\n",n);
}
}
return 0;
}