欢迎来到Nepire的校OJ入门题解——————17蓝桥选拔篇(五)
这次我主要是讲解第⑨届蓝桥杯全国软件和信息技术专业人才大赛校内选拔赛的七道题目,中间可能会扯到一些其他东西,然后就开始我们的入门题解吧呜喵
Problem E:误会
Description
这天小张在院子里晒着太阳,隔壁老王笑呵呵地走过来:“哟,光合作用呢?”
小张一脸懵逼:“我又不是植物,怎么光合作用?”
“因为你头顶一片绿啊!”
“怎么说话的,信不信把你打成植物人,让你也光合作用?”
老王一脸同情地看着小张:“你大概还不知道吧,你那女朋友可是富贵人家的小姐。”说完把手指向了远处一家叫“富贵人家”的洗脚城。于是,小张立马去房里拿出钞票打车过去。小张有1到n每种面值的钞票各一张,但是小张有个奇怪的原则,如果拿了面值为x的钞票,就不会拿面值为2x的钞票,那么小张最多拿多少张钞票?Input
输入数据第一行是一个整数T(T <= 10),表示有T组测试数据。
每组数据输入一个整数n(0 < n <= 25)。Output
每组数据输出一行,一行输出一个整数,表示答案。
Sample Input
2
2
10Sample Output
1
6Source
解题思路
这题是这次考试第二水的题,逐个判断这个数是否是已经拿走的面额,如果不是则拿走这个数面额两倍的数。
参考代码
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <wctype.h>
#include <assert.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#define k 100
int main()
{
int t,n,a[k]={0},i,j,m=0;
scanf("%d",&t);
while(t--)
{
m=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
a[i]=i+1;
}
for(i=0;i<n;i++)
{
if(a[i] != 0)
{
for(j=1;j<=n;j++)
{
if(a[i]*2==j)
{
a[j-1]=0;
}
}
}
}
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
m++;
}
}
printf("%d\n",m);
}
return 0;
}