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. php redis扩展安装步骤

    因为redis不是php技术自带的技术,因此我们如果要通过php程序来操作redis,需要redis设计者提供对应的操作接口(函数类)我们使用phpredis.tar.gz文件在源码编译生成一个red ...

  2. 数据结构部分总结(c语言版)

    这是一个 /*此头文件适用于串其中包括最基本的函数操作 OK代表成功NO代表失败FS为特殊失败的标志 注:此头文件中的初始化使用'0'代表结束的 使用者可以根据需要自行改变,最后一 个函数为KMP算法 ...

  3. ZYNQ笔记(4):PL触发中断

    一.ZYNQ中断框图 PL到PS部分的中断经过ICD控制器分发器后同时进入CPU1 和CPU0.从下面的表格中可以看到中断向量的具体值.PL到PS部分一共有20个中断可以使用.其中4个是快速中断.剩余 ...

  4. Java随堂笔记三

    今天学习了Java运算符的最后一部分 public static void main(String[] args) {        //算数运算符:+ - * / % ++ --        // ...

  5. Ubiq:A Scalable and Fault-tolerant Log Processing Infrastructure

    Abstract 互联网应用通常会产生大量的时间日志需要进行分析和处理.本文介绍Ubiq的架构,它是一个分布式系统,用于处理不断增长的日志文件,具有可扩展性.高可用.低延迟的特性.Ubiq框架容忍基础 ...

  6. -UI调试工具 SAK 布局 MD

    目录 目录 SwissArmyKnife 接入方式 自动初始化版本 支持的功能 可配置项 原理 自定义功能 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndro ...

  7. Linux学习笔记之安装报错/lib/ld-linux.so.2: bad ELF interpreter

    0x00 64位系统中安装了32位程序解决办法 是因为64位系统中安装了32位程序 解决方法: yum install glibc.i686 0x01 解决交叉编译环境错误 yum install l ...

  8. Ubuntu系统下容器化部署gitlab

    容器化部署gitlab 获取镜像文件 1. 下载镜像文件 docker pull beginor/gitlab-ce:-ce. 2. 创建GitLab 的配置 (etc) . 日志 (log) .数据 ...

  9. SqlServer共用表达式(CTE)With As 处理递归查询

    共用表表达式(CTE)可以看成是一个临时的结果集,可以再SELECT,INSERT,UPDATE,DELETE,MARGE语句中多次引用. 一好处:使用共用表表达式可以让语句更加清晰简练. 1.可以定 ...

  10. restFull api接口

    RestFull api接口 前后端分离开发的接口规范 什么是RestFull 是目录比较流行的api设计规范 注:restfull api规范应用场景,前后端分离的项目中 数据接口的现场 例如: / ...