• 循环



       题目描述

       牛牛正在学习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
    ",(b - a) / c);
        }
        return 0;
    }
    

      

     
  • 相关阅读:
    Android 源代码解析 之 setContentView
    poj 2484 A Funny Game
    BlueDroid代码分析之GKI
    Chromium多线程模型设计和实现分析
    关于template 的23个问题
    Struts2 动态结果集
    沁园春&#183;咏史
    android中常见的内存泄漏和解决的方法
    Spring整合freemarker发送邮件
    [struts2学习笔记] 第三节 创建struts 2 HelloWorld所需的六个步骤
  • 原文地址:https://www.cnblogs.com/chen-1/p/9860887.html
Copyright © 2020-2023  润新知