循环-三打白骨精提交(Submit) 中文 时间:1s 空间:256M 题目描述: 白骨精是西游记中的妖怪,知道人类的弱点,在唐僧师徒一行西天取经的过程中三次变成人形接近唐僧,想吃唐僧肉,均被孙悟空识破。结果唐僧以为悟空误杀好人,赶走了悟空,悟空因此回了花果山,并叮嘱猪八戒和沙僧要照顾好唐僧。现在假设你和悟空正在与白骨精激战,悟空的金箍棒每次可以对白骨精造成a点伤害值, 你的钉耙可以对白骨精造成b点伤害值,白骨精有c的血量,但是白骨精有一个技能,只要血量不是恰好减成0,它都不会死。比如白骨精的血量现在是10,你给它一个11的伤害,减成了-1,它会无视你这次伤害,但是如果给他一个10的伤害,它就挂了。现在问你,这一波打斗能否彻底打死白骨精。 输入格式: 输入一行,包含三个整数a,b,c 输出
格式: 输出一行,如果这次战斗白骨精能被打死输出”Yes”,否则输出”No”. 样例输入1: 4 6 15 样例输出1: No 样例输入2: 3 2 7 样例输出2: Yes 样例输入3: 6 11 6 样例输出3: Yes 约定: 1<=a,b<=100,1<=c<=10000 https://xjoi.net/problem/1188
#include <iostream>
using namespace std;
int main()
{
int a,b,c,n;
int m=0;
cin>>a>>b>>c;
while(c!=0)
{
if(c-a>=0)c=c-a;
if(c-b>=0)c=c-b;
if(c<a&&c<b)break;
}
if(c==0)
cout<<"Yes";
else cout<<"No";
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a,b,c,n;
int m=0;
cin>>a>>b>>c;
while(c!=0)
{
if(c-a>=0)c=c-a;
if(c-b>=0)c=c-b;
if(c<a&&c<b)break;
}
if(c==0)
cout<<"Yes";
else cout<<"No";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{ bool nani=0,na=0;
int a,b,c,n;
cin>>a>>b>>c;
if(c==0){
cout<<"No";
return 0;
}
n=c;
if(c%a==0||c%b==0||c%(a+b)==0){
cout<<"Yes";
return 0;
}
while(n>0){
if(n-a>=0)n-=a;
if(n==0||n%a==0||n%b==0||n%(a+b)==0){
cout<<"Yes";
break;
}
if(n-b>=0)n-=b;
if(n==0||n%a==0||n%b==0||n%(a+b)==0){
cout<<"Yes";
break;
}
n=n+a+b;
if(n-b>=0)n-=b;
if(n==0||n%a==0||n%b==0||n%(a+b)==0){
cout<<"Yes";
break;
}
if(n-a>=0)n-=a;
if(n==0||n%a==0||n%b==0||n%(a+b)==0){
cout<<"Yes";
break;
}
else if(n<a&&n<b)
{
cout<<"No";
return 0;
}
}
return 0;
}
八戒啊,5 3 6就不行了,这不就是错了了吗。按照你这个写法,你应该判断下a和b的大小,让a<=b才行的。还有cout<<后面最好不上endl;表示欢换行。
#include <iostream>
using namespace std;
int main()
{
int a,b,c,n;
int m=0;
cin>>a>>b>>c;
if(c%a==0||c%b==0)cout<<"Yes";
else{
while(c!=0)
{
if(c-a>=0)c=c-a;
if(c-b>=0)c=c-b;
if(c<a&&c<b)break;
}
if(c==0)
cout<<"Yes";
else cout<<"No";
}
return 0;
}
这样子比原来好一点,本来错了两个,用这个测试错了一个。但还是不知道哪里不行,我以为只能按顺序打的
还得自己来