循环
题目描述
牛牛正在学习See语言程序设计,今天他学到了循环语句。
See语言中的循环语句和C/C++风格类似,为以下格式:
for (i = a; i op b; i += c);
在上述语句中,a b c是整数,op是关系运算符,可能是 <=, >=或者 !=,分别代表小于等于,大于等于、不等于。
循环的执行过程和C语言类似:
1、首先执行赋值语句i = a
2、计算布尔表达式i op b的值,如果为假跳到步骤4,否则继续步骤3
3、执行赋值语句i += c, 既i = i + c,然后跳到步骤2
4、循环结束
需要注意的是,循环变量i的类型是See语言中的整型数,它的取值范围可以很大,不会像C语言中的int一样存在溢出
牛牛希望计算出步骤3(i += c)会执行多少次
输入仅一行四个整数a, op, b, c
其中op = 1代表<=, op = 2代表>=, op = 3代表!=
对于50%的数据,0 <= a, b, c <= 100
对于100%的数据, -109 <= a, b, c <= 109
输出一行一个整数代表步骤3执行的次数,如果循环永远不会终止(死循环)则输出-1
题解:只要先判断op的值,在分类讨论就行了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int op , a , b , c;
cin>>a>>op>>b>>c;
if(op == 1)
{
if(a > b)
{
puts("0");
return 0;
}
if(c <= 0)
{
puts("-1");
return 0;
}
int ans = (b - a)/c + 1;
cout<<ans<<endl;
}
else if(op == 2)
{
if(a < b)
{
puts("0");
return 0;
}
if(c >= 0)
{
puts("-1");
return 0;
}
int ans = (b - a)/c + 1;
cout<<ans<<endl;
}
else
{
if(a == b)
{
puts("0");
return 0;
}
if((a < b && c <= 0) || (a > b && c >= 0))
{
puts("-1");
return 0;
}
if((b - a) % c != 0)
{
puts("-1");
return 0;
}
printf("%d\n",(b - a) / c);
}
return 0;
}

浙公网安备 33010602011771号