关闭

兵临城下&&魔幻交易

143人阅读 评论(0) 收藏 举报
分类:

卢卡斯的驱逐者大军已经来到了赫柏的卡诺萨城,赫柏终于下定决心,集结了大军,与驱逐者全面开战。
卢卡斯的手下有6名天之驱逐者,这6名天之驱逐者各赋异能,是卢卡斯的主力。
为了击败卢卡斯,赫柏必须好好考虑如何安排自己的狂战士前去迎战。
狂战士的魔法与一些天之驱逐者的魔法属性是相克的,第i名狂战士的魔法可以克制的天之驱逐者的集合为Si(Si中的每个元素属于[0,5])。
为了公平,两名狂战士不能攻击同一个天之驱逐者。
现在赫柏需要知道共有多少种分派方案。
例:
S1={01},S2={23},代表编号为0的狂战士的魔法可以克制编号为0和编号为1的天之驱逐者,编号为1的狂战士的魔法可以克制编号为2和编号为3的天之驱逐者,共有四种方案:02,03,12,13。
02---代表第一个狂战士负责编号为0的驱逐者,第二个狂战士负责编号为2的驱逐者;
03---代表第一个狂战士负责编号为0的驱逐者,第二个狂战士负责编号为3的驱逐者;
12---代表第一个狂战士负责编号为1的驱逐者,第二个狂战士负责编号为2的驱逐者;
13---代表第一个狂战士负责编号为1的驱逐者,第二个狂战士负责编号为3的驱逐者;
S1={01},S2={01},代表编号为0的狂战士的魔法可以克制编号为0和编号为1的天之驱逐者,编号为1的狂战士的魔法可以克制编号为0和编号为1的天之驱逐者,共有两种方案:01,10。


输入描述:
多组测试数据,请处理到文件结束。

对于每组测试数据:

第一行为一个整数N,代表狂战士的数量。

第二行为N个字符串,第i个字符串表示第i个狂战士能够克制的天之驱逐者的集合。

保证:

1<=N<=6,1<=每个字符串的长度<=6,且每个字符都是0~5中的一个数字。



输出描述:
输出一个整数,代表分配方案数

输入例子:
2
01 23
2
01 01
3
3 015 5

输出例子:
4
2
2

#include<iostream>
#include<string>
using namespace std;
string s[6];
int n;
int vis[6];
int ans;
void dfs(int p)
{
	if (p == n)
	{
		ans++;
		return;
	}
	for (int i = 0; i < s[p].length(); i++)
	{
		if (vis[s[p][i] - '0'] == 0)
		{
			vis[s[p][i] - '0'] = 1;
			dfs(p + 1);
			vis[s[p][i] - '0'] = 0;
		}
	}
}
int main()
{
	while (cin >> n)
	{
		ans = 0;
		for (int i = 0; i < 6; i++)
			vis[i] = 0;
		for (int i = 0; i < n; i++)
			cin >> s[i];
		dfs(0);
		cout << ans << endl;
	}
}

魔幻交易

在最近几场魔兽争霸赛中,赫柏对自己的表现都不满意。
为了尽快提升战力,赫柏来到了雷鸣交易行并找到了幻兽师格丽,打算让格丽为自己的七阶幻兽升星。
经过漫长的等待以后,幻兽顺利升到了满星,赫柏很满意,打算给格丽一些小费。
赫柏给小费是有原则的:
1.最终给格丽的钱必须是5的倍数;
2.小费必须占最终支付费用的5%~10%之间(包含边界)。
升星总共耗费A魔卡,赫柏身上带了B魔卡,赫柏想知道他有多少种支付方案可供选择。
注:魔卡是一种货币单位,最终支付费用=本该支付的+小费

输入描述:
多组测试数据,请处理到文件结束。

对于每组测试数据:

包含两个整数A和B。

保证:

1<=A,B<=2,000,000,000,A<=B。


输出描述:
输出一个整数,代表方案数。

输入例子:
4 100
23 100

输出例子:
0
1
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int a, b;
	while (cin >> a >> b)
	{
		if (a>b)cout << '0' << endl;
		else
		{
			int count = 0;
			int start = ceil(a / 0.95);//下限
			int end = floor(a / 0.90);//上限
			while ((start % 5 != 0) && (start <= end))//找到可以被5整除的起始点
				++start;
			for (int i = start; i <= end&&i <= b; i += 5)
				++count;
			cout << count << endl;
		}
	}
	return 0;
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30120次
    • 积分:1541
    • 等级:
    • 排名:千里之外
    • 原创:126篇
    • 转载:41篇
    • 译文:0篇
    • 评论:5条
    最新评论