本文主要是介绍ZOJ 3798 Abs Problem,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 __int64using 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;
}
这篇关于ZOJ 3798 Abs Problem的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!