【衡阳八中noip模拟题】国色天香

时间:2023-03-09 09:22:26
【衡阳八中noip模拟题】国色天香

庭前芍药妖无格,池上芙蕖净少情。唯有牡丹真国色,花开时节动京城。
——唐·刘禹锡《赏牡丹》
芍药花再红终究妖艳无格。终不及牡丹,国色天香。
——乌拉那拉氏宜修
华妃总是想要用自己的气焰打压皇后,正好有一天,皇上有兴趣来玩一个火柴
游戏,让华妃和皇后都来参与。规则如下:

【衡阳八中noip模拟题】国色天香

这是火柴所形成9 个数字的方式,每个数字所需的火柴数量不一样。现在皇上
给每个人发了N 根火柴,华妃要摆出其所能摆出最小的数,而皇后则需要摆出其
所能摆出的最大的数。当然,皇上是不容糊弄的,前导0 或者摆出不规则的数字
什么的都算是作弊。获胜者的奖励则是皇上今晚会翻她的牌子。现在皇后与华妃
都使出浑身解数,而在一旁观看的甄嬛则想尽快知道答案。
[输入格式] (match.in)
输入包括若干组数据。第一行为一个数字T,表示皇上会进行T 次游戏。
接下来一行,每行一个正整数N,表示火柴的数量。
[输出格式] (match.out)
T 行,每组数据包括一行,分别为皇后所能摆出的最优值以及华妃所能摆出
的最优值。
[样例输入]

1 2

[样例输出]
1 1

[样例解释]
两根火柴只能摆出数字1,因此华妃和皇后的答案均为1.
[数据范围与约定]
对于K%的数据:N<=K (K=10,20,...,100)
对于100%的数据:2<=N<=100

简单模拟,没什么好说的,放代码吧(╯‵□′)╯︵┻━┻

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int t,n;
int maxn=,minn=;
int a[],b[];
int num[];
void work2(int n,int i)
{
num[]=;
num[]=;
num[]=;
num[]=;
num[]=;
num[]=;
if(n<=)
{
minn=num[n];
b[i]=minn;
return;
}
if(n>)
{
n=n-;
minn=;
while(n>=)
{
n=n-;
minn=minn*;
}
if(n>=)minn=minn*+num[n];
}
b[i]=minn;
}
void work1(int i)
{
scanf("%d",&n);
int key=n;
int k=;
while(n>=)
{
n=n-;
maxn=*k+maxn;
k=k*;
}
if(n==) maxn+=*(k/);
a[i]=maxn;
work2(key,i);
}
int main()
{
scanf("%d",&t);
for(int i=;i<=t;i++) work1(i);
for(int i=;i<=t;i++) printf("%d %d\n",a[i],b[i]);
return ;
}