您的位置:首页 > 其它

ZOJ 3798 Abs Problem

2014-08-28 16:51 302 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: