这是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行,很经济实惠有木有。。哈哈哈