循环


   题目描述

   牛牛正在学习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%的数据, -10<= 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;
}

  

 
posted @ 2018-10-27 13:12  CZD648  阅读(165)  评论(0编辑  收藏  举报
Live2D