CF58E Expression 搜索
题目传送门:http://codeforces.com/problemset/problem/58/E
题意:给出一个形如$x+y=z$(不一定正确)的式子,试输出一个$a+b=c$的式子,满足:$1.$等式成立;$2.$等式由给出的$x+y=z$等式加入若干数字得到;$3.$在满足前两个要求的前提下式子最短。若有多组输出任意一组均可。给出的等式中所有的数大小均不超过$10^6$
与虫食算一题很相似。
考虑从最后一位开始进行搜索。对于其中某一位,至多只有两种情况:加入一个数使这一位上运算成立,或者这一位上本就运算成立,无需加入数。
所以答案范围在$10^{14}$之内,搜索可以完成
注意本题的细节:在运算某一位时,如果某一个数结果为$0$,而更高位上还需要补数字,这是不可行的。
因为各种魔改所以代码极其难看
#include<bits/stdc++.h>
using namespace std;
][] , ans[][] , nA , nB , nC , minN = , cnt , t[];
//now是当前加了哪些数
//ans是最终答案加了哪些数
void dfs(int a , int b , int c , int num , int jw , int cou , bool ifA , bool ifB){
//abc记录当前三个数还有多少没有算
//num记录加了几个数
//cou表示加法共有几位
//ifA与ifB表示是否还能够再a或b上加数
if(!a && !b && !c && !jw){
minN = num;
cnt = cou;
memcpy(ans , now , sizeof(now));
return;
}
//注意:下面的四个dfs前的if中的条件都有c!=0!!!
+ b % - c % + jw == && c)
dfs(a / , b / , c / , num , , cou + , a ? : , b ? : );
+ b % - c % + jw == && c)
dfs(a / , b / , c / , num , , cou + , a ? : , b ? : );
else{
) return;
now[num][] = ++cou;
if(!ifA && c){
now[num][] = ;
now[num][] = (c % - b % - jw + ) % ;
bool f = ifB;
;
dfs(a , b / , c / , num , (now[num][] + b % + jw - c % ) / , cou , ifA , ifB);
ifB = f;
}
if(!ifB && c){
now[num][] = ;
now[num][] = (c % - a % + - jw) % ;
bool f = ifA;
) ifA = ;
dfs(a / , b , c / , num , (now[num][] + a % + jw - c % ) / , cou , ifA , ifB);
ifA = f;
}
now[num][] = ;
now[num][] = (a % + b % + jw) % ;
;
;
dfs(a / , b / , c , num , (a % + b % + jw - now[num][]) / , cou , ifA , ifB);
}
}
int main(){
int a , b , c;
bool f;
scanf("%d+%d=%d" , &a , &b , &c);
dfs(a , b , c , , , , , );
//一个很迷的输出
;
] - ) p++;
; i <= cnt ; i++)
] == i){
t[i] = ans[p++][];
] - ) p++;
}
else{
t[i] = a % ;
a /= ;
}
f = ;
for(int i = cnt ; i ; i--)
if(f || t[i]){
putchar(t[i] + ');
f = ;
}
putchar('+');
p = ;
] - ) p++;
; i <= cnt ; i++)
] == i){
t[i] = ans[p++][];
] - ) p++;
}
else{
t[i] = b % ;
b /= ;
}
f = ;
for(int i = cnt ; i ; i--)
if(f || t[i]){
putchar(t[i] + ');
f = ;
}
putchar('=');
p = ;
] - ) p++;
; i <= cnt ; i++)
] == i){
t[i] = ans[p][];
p++;
] - ) p++;
}
else{
t[i] = c % ;
c /= ;
}
f = ;
for(int i = cnt ; i ; i--)
if(f || t[i]){
putchar(t[i] + ');
f = ;
}
;
}
CF58E Expression 搜索的更多相关文章
- Codeforces 58E Expression (搜索)
题意:给你一个可能不正确的算式a + b = c, 你可以在a,b,c中随意添加数字.输出一个添加数字最少的新等式x + y = z; 题目链接 思路:来源于这片博客:https://www.cnb ...
- [GodLove]Wine93 Tarining Round #7
比赛链接: http://vjudge.net/contest/view.action?cid=47643#overview 比赛来源: 2012 ACM/ICPC Asia Regional Han ...
- Emacs快捷键列表
C = ControlM = Meta = Alt | EscDel = Backspace 基本快捷键(Basic)C-x C-f "find"文件, 即在缓冲区打开/新建一个文 ...
- EMACS快捷键
C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建 ...
- Emacs快捷键(较全)
C = Control M = Meta = Alt | Esc Del = Backspace 基本快捷键(Basic) C-x C-f "find"文件, 即在缓冲区打开/新建 ...
- lucene 范围搜索表达式(range expression)
实际测试 lucene范围符号,大于等于或小于等于符号[],大于或小于符号{} newIntRange或newLongRange一样 代码: // test lucen ...
- jQuery find() 搜索所有段落中的后代 C# find() 第一个匹配元素 Func 有返回值 Action是没有返回值 Predicate 只有一个参数且返回值为bool 表达式树Expression
所有p后代span Id为 TotalProject 的 select 标签 的后代 option标签 为选中的 text using System; using System.Collections ...
- Expression表达式 实现and、or搜索
用法: [HttpPost] public ActionResult GetBannerList(int pageIndex, int pageSize, string search) { Resul ...
- WPF 自定义搜索框
控件中的搜索图标下载地址:http://www.easyicon.net/1183666-Search_icon.html 搜索框设计过程比较简单: 1.先定义一个Rectangle作为背景 2. ...
随机推荐
- 《Attention is All You Need》浅读(简介+代码)
2017年中,有两篇类似同时也是笔者非常欣赏的论文,分别是FaceBook的<Convolutional Sequence to Sequence Learning>和Google的< ...
- 泛化之美--C++11可变模版参数的妙用
1概述 C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数.任意类型的参数.相比C++98/03 ...
- python第九十六天 ---Django(1)
django 模块 一 安装: pip3 install django 或 python -m pip install django 二 添加环境变量 相关命令: #cmd 下 django-ad ...
- 关于使用WeUI在IE中提示“font-face 未能完成 OpenType 嵌入权限检查。权限必须是可安装的。”的问题
@font-face是css3中定义字体的规则. 首先,在使用weui时,在Chrome.Firefox下没有问题,但是在IE下提示“font-face 未能完成 OpenType 嵌入权限检查.权限 ...
- redhat5 安装mysql 5.6
在官网找到下载链接 http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.19-1.rhel5.x86_64.rpm-bundle.tar wg ...
- Scrapy爬取遇到的一点点问题
学了大概一个月Scrapy,自己写了些东东,遇到很多问题,这几天心情也不大好,小媳妇人也不舒服,休假了,自己研究了很久,有些眉目了 利用scrapy 框架爬取慕课网的一些信息 步骤一:新建项目 scr ...
- 2.1Python数据处理篇之---内建有关数学的函数
目录 目录 前言 (一)数学相关得内建函数 (二)具体演示 1.求绝对值 2.创建一个复数 3.求商和余数 4.求x得y次幂 5.生成一个序列 6.四舍五入 7.对一个集合求和 8.求最大值 9.求最 ...
- Hbase-2.0.0_03_Hbase数据模型
1. hbase数据模型 1.1. HBase数据模型术语 Table HBase表由多行组成. Row HBase中的一行由一个行键和一个或多个列组成,列的值与这些列相关联.存储行时,按行键按字母顺 ...
- 截取字符串substr和subString的却别
substr 方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.substr(start [, length ]) 参数 stringvar 必选项.要提取子字符串的字符串文字或 ...
- Java设计模式之十 ---- 访问者模式和中介者模式
前言 2018年已经过去,新的一年工作已经开始,继续总结和学习Java设计模式. 在上一篇中我们学习了行为型模式的解释器模式(Interpreter Pattern)和迭代器模式(Iterator P ...