1. 程式人生 > >牛客網NOIP賽前集訓營-普及組(第七場) A 迴圈

牛客網NOIP賽前集訓營-普及組(第七場) A 迴圈

題目連結:https://www.nowcoder.com/acm/contest/171/A
本題比較簡單(我竟然好意思說)主要是把c分成出c>0,c=0,c<0三類。不要忘記c=0和c<0(我因此改了半天 哭)尤其是op=3,a=b,c=0;另外c=0時,不要對c取餘和除。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
int main()
{

     long long a,b,c,m;
     int op;
     scanf("%lld%d%lld%lld",&a,&op,&b,&c);
     if(op==1)
     {
          if(a>b)
            {
                printf("0\n");
                return 0;
            }
         if(c>0)
         {
              m=(b-a)/c+1;
             printf("%lld\n",m);
         }
         if(c<=0)
         {
             printf("-1\n");
            return 0;
         }
     }
     if(op==2)
     {
         if(a<b)
         {
              printf("0\n");
              return 0;
         }
         if(c>=0)
        {
             printf("-1\n");
            return 0;
         }
         else
         {
             c=-1*c;
              m=(a-b)/c+1;
              printf("%lld\n",m);
         }

     }
     if(op==3)
     {
         if(c==0&&a!=b)
            {
             printf("-1\n");
            return 0;
         }
         if(a==b)
         {
             printf("0\n");
             return 0;
         }
         if((b-a)%c!=0||(b-a>0&&c<0)||(b-a<0&&c>0))
         {
             printf("-1\n");
             return 0;
         }
         if(c>0)
          m=(b-a)/c;
             else
               {
                   c=-1*c;
                   m=(a-b)/c;
               }
                 printf("%lld\n",m);

     }
    return 0;
}