A 经此一役小红所向无敌(水题)

LINK
题目描述
经过重重困难,对立和光终于来到魔王城,和最终的大魔王——小红进行决战。

已知小红的血量是 10^{999999999}。
对立的攻击力是 aa ,血量是 hh 。
光的攻击力是 bb ,血量是 kk 。

每回合光先对小红发起攻击,然后对立对小红发起攻击,然后小红展开幻术,令光和对立同时互相攻击。
每次攻击后,受击者的血量会减掉攻击者的攻击力。
当光和对立其中一人死亡后,另一人会悲痛欲绝,对小红发出自己攻击力*10的伤害的大招,然后自杀。(若两人同时死亡,则两人都无法发出大招)

小红想知道,弱小的光和对立,她们能对自己造成多少点伤害?

输入描述:
一行 44 个正整数 aa , hh , bb , kk ,用空格隔开。
输出描述:
一个正整数,代表小红受到的伤害。
1≤a,b,h,k≤10 ^9

示例1
输入
复制
2 3 1 3
输出
复制
26
说明
第一回合,小红受到了对立和光的攻击,并让她们互相攻击。第一回合结束时,小红共受到 3 点伤害。这时对立血量为 2 ,光的血量为 1 。
第二回合,小红受到了对立和光的攻击,并让她们互相攻击。这时对立血量为 1 ,光的血量为 0 死亡。对立放出大招后自杀。本回合小红共受到 23 点伤害。
小红受到的总伤害为 3+23=263+23=26 。


分析:当时慌得一匹没有做出来,降低时间复杂度所以直接除和取余,不要用while循环,稍微注意一下1≤a,b,h,k≤10^9应该开long long

#include
#include
#include
using namespace std;
typedef long long ll;
int main()
{
	ll a1,a2,b1,b2,t1,t2,sum;
	scanf("%lld%lld%lld%lld",&a1,&b1,&a2,&b2);
	t1=t2=0;
	t1=b1/a2;
	t2=b2/a1;
	if(b1%a2)
	t1++;
	if(b2%a1)
	t2++;
	sum=min(t1,t2)*(a1+a2);
	if(t1<t2)
	sum+=a2*10;
	if(t2<t1)
	sum+=a1*10;
	printf("%lld\n",sum);
}

你可能感兴趣的:(水题,c语言)