codeforces B. A and B 找规律
Educational Codeforces Round 78 (Rated for Div. 2)
1 second
256 megabytes
standard input
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:
- add 11 to aa, then a=2a=2 and b=3b=3;
- add 22 to bb, then a=2a=2 and b=5b=5;
- 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.
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).
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
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 找规律的更多相关文章
- Codeforces 870C Maximum splitting (贪心+找规律)
<题目链接> 题目大意: 给定数字n,让你将其分成合数相加的形式,问你最多能够将其分成几个合数相加. 解题分析: 因为要将其分成合数相加的个数最多,所以自然是尽可能地将其分成尽可能小的合数 ...
- Codeforces Gym 100015B Ball Painting 找规律
Ball Painting 题目连接: http://codeforces.com/gym/100015/attachments Description There are 2N white ball ...
- Codeforces Gym 100637B B. Lunch 找规律
B. Lunch Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/B Des ...
- Codeforces 603A - Alternative Thinking - [字符串找规律]
题目链接:http://codeforces.com/problemset/problem/603/A 题意: 给定一个 $01$ 串,我们“交替子序列”为这个串的一个不连续子序列,它满足任意的两个相 ...
- Codeforces 474D Flowers (线性dp 找规律)
D. Flowers time limit per test:1.5 seconds memory limit per test:256 megabytes We saw the little gam ...
- codeforces D. Queue 找规律+递推
题目链接: http://codeforces.com/problemset/problem/353/D?mobile=true H. Queue time limit per test 1 seco ...
- Codeforces Gym 100114 A. Hanoi tower 找规律
A. Hanoi tower Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descript ...
- Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)
题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...
- 找规律/贪心 Codeforces Round #310 (Div. 2) A. Case of the Zeros and Ones
题目传送门 /* 找规律/贪心:ans = n - 01匹配的总数,水 */ #include <cstdio> #include <iostream> #include &l ...
随机推荐
- SpringCloud Stream使用案例
官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架. 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互 ...
- Java学习:方法重载的使用规则
方法的重载 对于功能类似的方法来说,因为参数列表不一样,却需要记住那多不同的方法名称,太麻烦. 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样.好处:只需要记住唯一一个方法名称 ...
- webUI框架miniUI,easyUI,extJS,Bootstrap简介及简单部署
本文为大家讲解的是webUI框架miniUI,easyUI,extJS,Bootstrap简介及简单部属,感兴趣的同学参考下 ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端a ...
- HTML中的元素是有属性的:标准与解释器
元素的属性只有有标准和相应的解释器才有存在的意义. HTML中的元素是有属性的:这些额外的属性值可以配置元素或者以各种方式来调整元素的行为,进而满足用户所需的标准. https://developer ...
- Github Markdown 图片如何并排显示
Github Markdown 图片如何并排显示 要一张图片接着一张图片的写,中间不能有换行.如果换行的话则图片也换行 正确的写法:  开启关闭防火墙 放行端口 RedHat7防火墙相关的指令(firewall-cmd) 安装firewall 本文内容适用于 redhat 和 centos ...
- Gearman介绍、原理分析、实践改进
gearman是什么? 它是分布式的程序调用框架,可完成跨语言的相互调用,适合在后台运行工作任务.最初是2005年perl版本,2008年发布C/C++版本.目前大部分源码都是(Gearmand服务j ...
- linux如何执行定时任务
前言:最近在做一个前端监控系统,用到分表分库的功能,由于代码上无法做到实时新建表,所以只能够曲线救国,使用linux系统的定时任务来完成. ============================== ...
- rpm安装与yum安装的区别
linux下的安装包多为rpm安装包.通常安装方法为 rpm -ivh 包的路径+包名.rpm 其中参数-i为安装 -v显示信息 -h显示进度条.这三个参数基本捆绑使用rpm的路径不单可以是本地磁 ...