[2021.11.22]UPC-2021级计算机2021随堂测验第五场21284 Problem H 三打白骨精

这篇博客讨论了《西游记》中白骨精战斗的数学问题,将其转化为寻找特定函数的整数解。通过分析孙悟空和猪八戒的攻击伤害,确定能否在白骨精血量归零前将其击败。博客提出了穷举法解决这个问题,并给出了示例代码来判断战斗结果。读者将了解到如何运用数学思维解决实际问题,以及在编程中解决类似挑战的方法。
摘要由CSDN通过智能技术生成

题目描述

白骨精是西游记中的妖怪,知道人类的弱点,在唐僧师徒一行西天取经的过程中三次变成人形接近唐僧,想吃唐僧肉,均被孙悟空识破。结果唐僧以为悟空误杀好人,赶走了悟空,悟空因此回了花果山,并叮嘱猪八戒和沙僧要照顾好唐僧。现在假设你和悟空正在与白骨精激战,悟空的金箍棒每次可以对白骨精造成a点伤害值, 你的钉耙可以对白骨精造成b点伤害值,白骨精有c的血量,但是白骨精有一个技能,只要血量不是恰好减成0,它都不会死。比如白骨精的血量现在是10,你给它一个11的伤害,减成了-1,它会无视你这次伤害,但是如果给他一个10的伤害,它就挂了。现在问你,这一波打斗能否彻底打死白骨精。

输入

输入一行,包含三个整数a,b,c(1<=a,b<=100,1<=c<=10000)

输出

输出一行,如果这次战斗白骨精能被打死输出”Yes”,否则输出”No”.

样例输入 Copy

【样例1】
4 6 15
【样例2】
3 2 7
【样例3】
6 11 6

样例输出 Copy

【样例1】
No
【样例2】
Yes
【样例3】
Yes

关键的地方应该是要找到正确的方法...有很多同学的代码中默认了孙悟空和你(猪八戒)打的次数差值不超过1,然而事实上是有可能会出现孙悟空打三次,猪八戒打一次正好打死白骨精的情况的.....

实际上...训练赛中的青蛙跳和这个题都有着共性... 该题可以抽象为求函数 ax+by=c 有没有正整数解..其中x为孙悟空打的次数,y为猪八戒打的次数。

而青蛙跳则是两个函数有无x,y均为正整数的交点..

下面是我的代码 : )

#include <cstdio>
int main() {
   int a,b,c,x=0;
   scanf("%d %d %d",&a,&b,&c);  
   while(c-a*x>=0){            //每一个x都对应着一个确切的y,所以我们只需要穷举x就可以了。
       if((c-a*x)%b==0){     //y=(c-a*x)/b 当c-a*x小于0时,之后的y肯定都小于0了,说明无整数解
           printf("Yes");   
           return 0;
       }
       x++;
   }
   printf("No");
}

如有纰漏,请多多指正!!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值