Educational Codeforces Round 78 (Rated for Div. 2)

1278B - 6

B. A and B 
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given two integers aa and bb. You can perform a sequence of operations: during the first operation you choose one of these numbers and increase it by 11; during the second operation you choose one of these numbers and increase it by 22, and so on. You choose the number of these operations yourself.

For example, if a=1a=1 and b=3b=3, you can perform the following sequence of three operations:

  1. add 11 to aa, then a=2a=2 and b=3b=3;
  2. add 22 to bb, then a=2a=2 and b=5b=5;
  3. add 33 to aa, then a=5a=5 and b=5b=5.

Calculate the minimum number of operations required to make aa and bb equal.

Input

The first line contains one integer tt (1≤t≤1001≤t≤100) — the number of test cases.

The only line of each test case contains two integers aa and bb (1≤a,b≤1091≤a,b≤109).

Output

For each test case print one integer — the minimum numbers of operations required to make aa and bb equal.

input

3
1 3
11 11
30 20

  output

3
0
4

  

Note

First test case considered in the statement.

In the second test case integers aa and bb are already equal, so you don't need to perform any operations.

In the third test case you have to apply the first, the second, the third and the fourth operation to bb (bb turns into 20+1+2+3+4=3020+1+2+3+4=30).

题意:给你两个数a和b,你每次可以选择一个数并给它加上n,操作后n++,重复多次,最后要使a==b,要你求出最少次数n。

刚开始我以为是暴力模拟题,就用自以为对的方式模拟了,居然WA。我就放弃了,赛后居然是打表找规律?!

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main(void)
{
int t;
ll a,b;
scanf("%d",&t);
//printf("%lld\n",ss);
while(t--)
{
scanf("%lld %lld",&a,&b);
//直接模拟
ll n=0ll;
ll sn=0;
while(a!=b)
{
n++;//操作
if(a>b)
swap(a,b);//a小b大
sn=b-a;
//差==n
if(n<=sn)
a+=n;
else
b+=n; }
//printf("a:%d b:%d\n",a,b);
printf("%lld\n",n);
}
return 0;
}

  我发现比如,输入a=1 b=15时,输出为12,即当a+36=47,b+32=47。正确答案应为7,即a+21=22,b+7=22。故错误。

至于为什么会错,我还不知道。

下面是打表找规律的,不是我找的,还不太懂。

且听我瞎分析一波,上面代码是可以的我觉得,只是求的不是最小值。还是那上面的例子说,设sum[n]为前n项和,sum[7]=28;28-14 (就是a-b)=14(设为c,是个偶数,我们就可以把14平均分给a,b);

即a=1+14=15,b=15; c=14,把c平分给a,b即a=15+7=22,b=15+7=22;

也就是说先把a,b都变为sum[n]-c,然后都加上同一个数变为X,即要保证(sum[n]-abs(a-b))是个偶数。

似乎有点道理。如有错误欢迎指出

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
ll sum[1000000+5];
int main(void)
{
int t;
ll a,b;
scanf("%d",&t);
for(int i=1;i<=1000000;i++)
sum[i]=sum[i-1]+i;
while(t--)
{
scanf("%lld %lld",&a,&b);
ll n=0ll;
ll sn=0;
if(a!=b)
for(int i=1;i<=1000000;i++){
sn=abs(a-b);
if(sum[i]>=sn&&(sum[i]-sn)%2==0)
{
n=i;
break;
}
}
printf("%lld\n",n);
}
return 0;
}

  

 

codeforces B. A and B 找规律的更多相关文章

  1. Codeforces 870C Maximum splitting (贪心+找规律)

    <题目链接> 题目大意: 给定数字n,让你将其分成合数相加的形式,问你最多能够将其分成几个合数相加. 解题分析: 因为要将其分成合数相加的个数最多,所以自然是尽可能地将其分成尽可能小的合数 ...

  2. Codeforces Gym 100015B Ball Painting 找规律

    Ball Painting 题目连接: http://codeforces.com/gym/100015/attachments Description There are 2N white ball ...

  3. Codeforces Gym 100637B B. Lunch 找规律

    B. Lunch Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/B Des ...

  4. Codeforces 603A - Alternative Thinking - [字符串找规律]

    题目链接:http://codeforces.com/problemset/problem/603/A 题意: 给定一个 $01$ 串,我们“交替子序列”为这个串的一个不连续子序列,它满足任意的两个相 ...

  5. Codeforces 474D Flowers (线性dp 找规律)

    D. Flowers time limit per test:1.5 seconds memory limit per test:256 megabytes We saw the little gam ...

  6. codeforces D. Queue 找规律+递推

    题目链接: http://codeforces.com/problemset/problem/353/D?mobile=true H. Queue time limit per test 1 seco ...

  7. Codeforces Gym 100114 A. Hanoi tower 找规律

    A. Hanoi tower Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descript ...

  8. Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)

    题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...

  9. 找规律/贪心 Codeforces Round #310 (Div. 2) A. Case of the Zeros and Ones

    题目传送门 /* 找规律/贪心:ans = n - 01匹配的总数,水 */ #include <cstdio> #include <iostream> #include &l ...

随机推荐

  1. Prometheus 基于文件的服务发现

    Prometheus 基于文件的服务发现 官方文档:https://github.com/prometheus/prometheus/tree/master/discovery 服务发现支持: end ...

  2. 离线方式快速安装python模块以及相关依赖模块

    一般公司的服务器都是和外网隔离的,这个如果没有内部pip源的话,想要安装python的模块就需要去python官网一个一个下载依赖模块的包,然后逐个安装,这样做非常耗时间. 我们今天用的办法就是现在我 ...

  3. 『cdq分治和多维偏序问题』

    更新了三维偏序问题的拓展 cdq分治 \(cdq\)分治是一种由\(IOI\ Au\)选手\(cdq\)提出的离线分治算法,又称基于时间的分治算法. 二维偏序问题 这是\(cdq\)分治最早提出的时候 ...

  4. spring cloud应用

    1.什么是注册中心 (1)就是首先有一个eureka server,服务的注册与发现的中心(2)你如果写好了一个服务,就可以将其注册到eureka server上去(3)然后别人的服务如果要调用你的服 ...

  5. SQL Server 新增自动执行任务

    第一步右击SQL Server代理,新建作业 第二步选择常规,给你要执行的计划命名 第三步选择步骤,然后给步骤命名,选择类型,数据库,输入你要执行的语句. 第四步设置要执行的频率,根据业务需要,一般建 ...

  6. Jquery源码解析及案例分析

    本人刚学先上链接(别人写的挺好的)后期同步补上

  7. js/jquery键盘事件及keycode大全

    js/jquery的键盘事件分为keypress.keydown和keyup事件 一.键盘事件 1.keydown()事件当按钮被按下时,发生 keydown 事件. 2.keypress()事件ke ...

  8. Spring Cloud的常规组件和简单实战(一)

    最近一段时间在学习Spring Cloud,从Eureka到Hystrix,常用的配置和方法都有涉及一些,以此笔记来记录一下学习到的东西,也分享一下.内容以实战为起点,主要以介绍常规用法为主,最后也会 ...

  9. 使用DES算法实现加密解密

    使用DES算法实现加密解密 我们常见的加密算法有DES.MD5.IDEA.AES等等,这篇随笔介绍使用DES算法实现加密解密 首先介绍一下DES算法: DES算法为密码体制中的对称密码体制,又被称为美 ...

  10. linux 如何修改默认的FTP帐号或密码

    wdlinux_lamp,wdlinux_lnmp的系统安装好后,默会创建一个FTP用户用户名是:wdlinux密码是:wdlinux.cn 如想修改密码或用户名,先找个ssh工具,有关ssh客户端的 ...