HDU暑期积分赛补题

题目描述
又到了基情四射的夏天,大家出去约妹子,而肥宅辞树只想宅在机房喝肥宅快乐水。辞树一下
子买了n瓶肥宅快乐水。已知他一天里至少喝掉一瓶肥宅水且他是一口干掉一整瓶。(肥宅Orz)
他想要知道自己一共有多少种喝肥宅水的方案。两种方案被认为是不同的,当且仅当辞树买的
这些肥宅水能喝的天数不同,或者存在一天两种方案喝的肥宅水瓶数不同。



输入
第一行输入一个正整数T,代表有T组数据(0 < T < 11) 每组数据有一个正整数n,代表辞树买
了n瓶肥宅快乐水。(0 < n < 108)
输出
对于每组数据,输出一行,将方案数用二进制表示输出。
输入样例
1
3


输出样例
100


提示


3瓶肥宅快乐水的分配方式如下
1 1 1(三天喝完,一天一瓶)
2 1(两天喝完,第一天两瓶,第二天一瓶)
1 2(两天喝完,第一天一瓶,第二天两瓶)
 


当时找到了规律但是那个按照二进制输出让我S B 了,其实他数出的肯定是二等倍数,2 ->是10  4->100  8->1000以后每一个就 多加个零就完事了。~~~!!!代码

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>


int t,n;
int ans ;

int main ()
{
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		if(n==1)
		{
			printf("1\n");
		}
		if(n>=2)
		{
			ans = pow(2,n-1);
		}
		printf("1");
		for(int i= 1;i<=n-1;i++)
		{
			printf("0\n");
		}
		
		
	}
	return 0;
}

 





2: 玩游戏

题目描述
zxy和wfy用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子a[i] 。游戏以谁
手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。
zxy和wfy轮流进行,wfy先开始。每回合,玩家从一行的开始或结束处取走整堆石头。这种情况
一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。
假设zxy和wfy都发挥出最佳水平,当zxy赢得比赛时输出“zxy”,当wfy赢得比赛时输出“wfy”。
输入
有T组输入,每个输入后有一个n,在n后有n个数字,a1; a2::::an。
n的范围是   1<=n<=1e5
1 <=a<=1e5
输出
输出胜利者的名字"zxy"或者"wfy"
输入样例
1
4
5 3 4 5


输出

输出样例
wfy
提示
wfy先开始,只能拿前5 颗或后5 颗石子。
假设他取了前5 颗,这一行就变成了[3,4,5] 。
如果zxy拿走前3 颗,那么剩下的是[4,5],wfy拿走后5 颗赢得10 分。
如果zxy拿走后5 颗,那么剩下的是[3,4],wfy拿走后4 颗赢得9 分。
这表明,取前5 颗石子对wfy来说是一个胜利的举动,所以我们输出wfy 。

这个题就是个骚题,其实不管怎么弄,都是wfy赢了,因为他先拿,肯定拿多的

所以不管输入什么就数出wfy  就行了  

#include<iostream>
#include<cstdio>
#define LL long long
using namespace std;
int t;
int n;
int a[maxn];
int main ()
{
	scanf("%d",&t);
	while(t--)
	{
		
		int zxy = 0;
		scanf("%d",&n);
		for(int i =1;i<=n;i++)
		{	
			scanf("%d",&a[i]);
		}
		printf("wfy");
	}
	return 0;
}



H 真。签到题
题目描述
A国的n个作战通信基站大部分被C国的特种部队破坏,基站编号1到n,只剩下编号为a和b的通信
基站完好,为了快速恢复通信,A国派出zzx和fk两位工程师去修复,A国的通信基站有一个特殊
隐蔽的备用系统,只有让两个完好的通信基站向编号为x的基站发送信号,x是这两个完好基站
编号的和或者差的绝对值,该被破坏的基站的备用系统才会被激活,工程师才能恢复被破坏的
基站,假设zzx工程师先到达可修复的基站进行修复,接着fk去修复下一个,两人轮流修复,问
谁会修复最后一个可修复的基站
输入
输入n,a,b三个整数,代表基站的总数n和剩下的完好的两个基站的编号a,b;
1 < n <= 1e5
1 <= a; b <= n
处理到文件结束
输出
若zzx修复最后一个,输出zzx,否则输出fk
输入样例
5 1 4
10 3 7
输出样例
zzx
fk
 

这个题他其实要求一个GCD  因为如果a和b的GCD为1的话他们互质, 两个数又能相加又能相减

这样他们就能修完所有的基站;

#include<cstdio>
int n,b,a;
int v;
int gcd(int x,int y)
{
	if(!x||!y)
	{
		return x>y?x:y;
	}
	for(int t;t = x%y,t;x= y,y = t);
	return y;
}
int main ()
{
	while(scanf("%d%d%d",&n,&a,&b)!=EOF )
	{
		v = gcd(a,b);
		if((n/v)%2)  //里面等于0的时候不执行 所以这是判断 n 是奇数还是偶数的 
		{
			printf("zzx\n");  //如果是基数  并且GCD为1  一定是 ZZX 
		}
		else 
		printf("fk\n");
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值