题解

1.栅栏作画

题目大意:给定两个点,算出其中的所包含的不同的数(首尾不算)

【输入输出样例1

paint.in

paint.out

7 10

4 8

6

 

#include<bits/stdc++.h>

using namespace std;

int main()

{

int a,b,c,d,e[1000]={},s=0;

cin>>a>>b;

cin>>c>>d;

for(int i=a;i<=b-1;i++)

{

     e[i]=1;

     s=s+1;

}//将a到b之间的数进行标记

for(int i=c;i<=d-1;i++)

     if(e[i]==0)

     {

      e[i]=1;

    s=s+1;

     }//如果点还未被标记,则计数器加1

cout<<s<<endl;

return 0;

}

 

 

 

 

 

 

 

 

2.失去的母牛

   题目大意:给定两个点x,y,每移动一步就是上一步距离起点的2倍,(x+1,x-2,x+4),问移动多少步才能从xy

  有3种情况:

  x=y,x<y,x>y

 注:x不会因为加减而改变

输入输出样例

输入样例:

3 6

输出样例:

9

 

 

 

#include<bits/stdc++.h>

using namespace std;

int main()

{

int x,y,t,l,s=0,r;

cin>>x>>y;

if(x==y)

{

cout<<0<<endl;

return 0;

}//如果x=y,就一步也不用走

if(x>y)

{

  x=x+y;

  y=x-y;

  x=x-y;

  l=-1;

}如果x>y,就交换x和y,使情况变成和x<y一样,但要改变方向

else l=1;

r=0;

while(true)

{

if(x+l==y)//如果走完这一次刚好到达目的地

{

s=s+abs(r-l);

break;

    }

if(x+l>y)//如果走完这一次大于目的地

{

s=s+abs(r-abs(x-y));

break;

    }

    s=s+abs(r-l);

    r=l;

    l=l*(-2);

}

cout<<s<<endl;

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值