红色警戒(二)

这是OUC的C++的期中作业。写完和小组讨论发现了一种全部用C语言的答案。因为过于离谱,所以贴出来给大家开开眼。。😅

Description

在一局红色警戒游戏中,你代表的是英国势力,此时你迫切需要生产坦克来应对敌人的进攻,坦克分为灰熊坦克、幻影坦克、光棱坦克、天启坦克四种,价格分别为600、1000、1200、1750,生产时间分别为1、2、4、6单位时间,灰熊坦克为基础坦克无特殊属性,只有攻击、护甲、血量、移动速度四种属性,其余坦克除基础属性外,幻影坦克有变形属性,可幻化成为树木,光棱坦克有光棱射线属性,不采用普通攻击属性,天启坦克有对空攻击属性,并同时保有对地普通攻击属性,目前你手中共有m金币,并且你的石油井每单位时间为你生产100金币,坦克建造顺序为灰熊、幻影、光棱、天启作为循环,注意一个例子剩余金钱不够用于生产天启坦克,那么将开始下一循环,尝试生产灰熊,如果任何坦克都不能开始生产,立刻中断并输出,假设四种坦克每辆坦克基础属性都各为1点(若拥有),分别的特征属性也各为1点(若拥有),那么请你输出m金币最多可以建造几辆坦克,并输出七种属性分别的总和。

样例1:

若输入为1500金币,将生产2辆坦克,生产次序为灰熊、幻影,生产时长为3个单位时间。

解释:首先按顺序依次生产完灰熊,金币此时剩余1000(1500-600+1×100=1000),可以再生产一辆幻影,生产完幻影后,剩余金币200,不够生产任何坦克,结束生产,生产时间为生产一辆灰熊和一辆幻影的时间总和。

样例2:

若输入为2700金币,将生产4辆坦克,生产次序为灰熊、幻影、光棱、灰熊。

解释:首先按顺序循环生产灰熊、幻影、此时金币剩余1400,将再生产一辆光棱后,金币此时剩余600,将再生产一辆灰熊,金币剩余100,此时结束全部生产。

Input

输入:为m金币

Output

输出为:第一行建造几辆坦克

第二行输出生产的总时间

第二行为攻击、护甲、血量、移动速度、变形、光棱攻击、对空攻击各个属性的值

Sample Input 1

1500

Sample Output 1

2
3
2 2 2 2 1 0 0

Sample Input 2

2700

Sample Output 2

4
8
3 4 4 4 1 1 0

答案:

#include<iostream>
#include<string>
using namespace std;
class A {
public:
    int huixiong=600;
	int huanying=1000;
	int guangling=1200;
	int tianqi=1750;	
};

int main()
{
	int m;
	int a = 0;
	int b = 0;
	int c = 0;
	int d = 0;
	int e = 0;
	int f = 0;
	int g = 0;
	int h ;
	int n = 0;
	int j;
	int k = 0;
	A a1;
	cin >> m;
	for (int i = 0; i < 3; i++)
	{
		if (m < 4550)
			break;
		h = m / 4550;
		m = m - h * 4550;
		a = 3 * h + a;
		b = 4 * h + b;
		c = 4 * h + c;
		d = 4 * h + d;
		e = h + e;
		f = h + f;
		g = h + g;
		j = 13 * h;
		m = m + j * 100;
		n = n + 4 * h;
		k = j + k;
	}
		if (m >= 600)
		{
			n++;
			a++;
			b++;
			c++;
			d++;
			k = k + 1;
			m = m - 600;
			m = m + 100;
			
		}
		if (m >= 1000)
		{
			n++;
			a++;
			b++;
			c++;
			d++;
			e++;
			k = k + 2;
			m = m - 1000;
			m = m + 2 * 100;
			
		}
		if (m >= 1200) {
			n++;
			b++;
			c++;
			d++;
			f++;
			k = k + 4;
			m = m - 1200;
			m = m + 4 * 100;
			
		}
		if (m >= 600)
		{
			n++;
			a++;
			b++;
			c++;
			d++;
			k = k + 1;
			m = m - 600;
			m = m + 100;
			
		}
		if (m >= 1000)
		{
			n++;
			a++;
			b++;
			c++;
			d++;
			e++;
			k = k + 2;
			m = m - 1000;
			m = m + 2 * 100;
		}
		cout << "" << n << endl;
	cout << "" << k << endl;
	cout << "" << a << " " << b << " " << c << " " << d << " " << e << " " << f << " " << g << endl;
	return 0;
}

代码只有短短109行,很经济实惠有木有。。哈哈哈

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值