自己想的时候模拟了一下各个结果

感觉是不是会跟橘子苹果之间的比例有什么关系

搜题解的时候发现了 Stern-Brocot tree

长这样 和我想的那个很类似 可开心了

但是后来看不懂题解什么意思

关于Stern树的一点结论是 每一层相邻的两个数a/b 和 c/d 可以得到下面一层的数(a+c)/(b+d)

而且分子分母一定是互质的

后来自己找规律 觉得如果x比y小就需要一次B操作 下面是代码

TLE on test 10

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
#include<cstring> using namespace std; long long x, y; long long gcd(long long x, long long y)
{
return (y == 0)? x : gcd(y, x % y);
} int main()
{
while(scanf("%I64d%I64d", &x, &y) != EOF){
if(gcd(x, y) != 1){
cout<< "Impossible\n";
}
else{
long long timea = 0, timeb = 0;
while(abs(x-y) >= 1){
if(x < y){
if(timea){
cout<<timea<<"A";
timea = 0;
}
timeb++;
y -= x;
}
else{
if(timeb){
cout<<timeb<<"B";
timeb = 0;
}
timea++;
x -= y;
}
} if(timea)
cout<<timea<<"A"<<endl;
if(timeb)
cout<<timeb<<"B"<<endl;
}
} return 0;
}

T完了以后觉得自己真的怎么还是这么傻

也不估一下复杂度

又找到了新的题解 说直接模拟的

还是不太懂

先附在这里 晚点看

#include<bits/stdc++.h>
using namespace std;
typedef long long LL; void work()
{
LL a, b;
scanf("%I64d%I64d", &a, &b);
if(__gcd(a, b) != 1) {
printf("Impossible\n");
return;
}
while(a && b) {
if(a < b) {
LL t = b / a;
if(a * t == b) printf("%I64dB", t-1);
else printf("%I64dB", t);
b -= t * a;
}
else {
LL t = a / b;
if(b * t == a) printf("%I64dA", t-1);
else printf("%I64dA", t);
a -= t * b;
}
}
printf("\n");
} int main()
{
//freopen("data", "r", stdin);
work(); return 0;
}

找trader问了一下思路 突然好像理解了!!!

先假设某一个状态橘子苹果数量是A和B且A<B

那么B肯定是由k次上一状态的A加上上一状态的B得到的

所以可以理解 A操作的次数就是B/A次 如果没有余数说明过头了要减1

Alice, Bob, Oranges and Apples CodeForces - 586E的更多相关文章

  1. (中等) CF 585C Alice, Bob, Oranges and Apples,矩阵+辗转相除。

    Alice and Bob decided to eat some fruit. In the kitchen they found a large bag of oranges and apples ...

  2. Codeforces Beta Round #6 (Div. 2 Only) C. Alice, Bob and Chocolate 水题

    C. Alice, Bob and Chocolate 题目连接: http://codeforces.com/contest/6/problem/C Description Alice and Bo ...

  3. Educational Codeforces Round 9 B. Alice, Bob, Two Teams 前缀和

    B. Alice, Bob, Two Teams 题目连接: http://www.codeforces.com/contest/632/problem/B Description Alice and ...

  4. codeforces 632B B. Alice, Bob, Two Teams(暴力)

    B. Alice, Bob, Two Teams time limit per test 1.5 seconds memory limit per test 256 megabytes input s ...

  5. CF6C Alice, Bob and Chocolate

    CF6C Alice, Bob and Chocolate 题目链接 写了一天搜索写的有点累了,就顺手水了一道CF的模拟题 这道题就是简单的模拟整个题的过程,注意最后输出的形式就好了QWQ AC代码如 ...

  6. C - Alice, Bob and Chocolate(贪心)

    Problem description Alice and Bob like games. And now they are ready to start a new game. They have ...

  7. 2019.01.20 bzoj5158 Alice&Bob(拓扑排序+贪心)

    传送门 短代码简单题. 题意简述:对于一个序列XXX,定义其两个伴随序列a,ba,ba,b,aia_iai​表示以第iii个数结尾的最长上升子序列长度,bib_ibi​表示以第iii个数开头的最长下降 ...

  8. Jzzhu and Apples CodeForces - 449C (构造,数学)

    大意: 求从[1,n]范围选择尽量多的数对, 使得每对数的gcd>1 考虑所有除2以外且不超过n/2的素数p, 若p倍数可以选择的有偶数个, 直接全部划分即可 有奇数个的话, 余下一个2*p不划 ...

  9. 【Henu ACM Round #12 C】 Alice, Bob, Two Teams

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑任意两个字符串(a,b) 假设a在b的前面 那么如果a+b>=b+a 这里的+表示字符串的链接 那么显然需要交换a,b的位 ...

随机推荐

  1. SaltStack 安装及配置认证

    一.SaltStack 安装 SaltStack 是基于 Python 开发的,也是基于 C/S 架构,通过服务端 ( master ) 控制多台客户端 ( minion ) 实现批量操作这里我们使用 ...

  2. RAC的搭建(一)--安装环境准备

    软硬件环境准备: 1.1 虚拟环境: VirtualBox上两个虚拟机,3G内存1核 1.2 软件环境: 数据库安装软件:p10404530_112030_LINUX_1of7.zip  p10404 ...

  3. NUC972裸机调试步骤

    .将开发板设置成USB启动.开发板拨码开关与启动方式设置对应如下: 其中PA1 ,PA0对应S1和S0 上电或复位,使开发板从USB启动.开启NuWriter,选择正确的芯片型号,按下“Continu ...

  4. 正则表达式(overall)

    令自己想爱但深爱不上的正则表达式~ 阅读网站:http://c.biancheng.net/cpp/html/1402.html 为什么使用正则表达式? ①防止SQL注入:尤其对于网站,安全是至关重要 ...

  5. MyEclipse 10 下在线安装插件

    昨天不知道怎么就删除了电脑中的eclipse 我x,还原不回来了. 今天就安装了最新版本的myeclipse10,大家都知道,MyEclipse 中有一个烦人的 Software and Worksp ...

  6. Android 自定义 View 浅析

    Android 自定义 View 浅析 概括 说到自定义 View ,就一定得说说 android 系统的UI绘制流程.再说这个流程之前,我们先看一下在每一个 activity 页面中我们的布局 ui ...

  7. 正则-input控制输入

    大于0的数字:/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/  这正则看不太懂,先放着 作者:Kevin Yang 使用正则表达式找出不包含特定字符串 ...

  8. linux下删除大量小文件

    当目录下文件太多时,用rm删除文件会报错:-bash: /bin/rm: Argument list too long提示文件数目太多.解决的办法是使用如下命令:ls | xargs -n 10 rm ...

  9. ThinkPHP5 封装邮件发送服务(可发附件)

    1.Composer 安装 phpmailer 1 composer require phpmailer/phpmailer 2.ThinkPHP 中封装邮件服务类 我把它封装在扩展目录 extend ...

  10. Shell 中的反引号(`),单引号('),双引号(")

    在写shell的时候老是傻傻分不清楚,今天来理一理. 1.反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命 ...