Description

A multi-digit column addition is a formula on adding two integers written like this:

aaarticlea/webp;base64,UklGRg4FAABXRUJQVlA4TAIFAAAvm4EcAB6q2rYtkpxP7snUOdQR1BGULt22bbmSpUq2GtWqVJih1NAy74aT5d0SJQa+gaZw/WHmxE/cF5TLGGZmsMz4hBMHRdv/ts0P9jL/O+gE/xMYC4eamhkKCQoZGQV17yGU1b333m2GQMZPirVtbaY9cjbDHlgBK4hGx8bGIVFIVFRU1PReUK/BTP97L5ivvGLK039HbiQpUnoYbjOLqXmAkjf37Wb+3cy/Tek2dHbYNYDiKXtqROChO8XfwgRbtjr4xnoGgfQr5v/gCCpWsRDA5jPcjwJf7lO5Slc7y/PPSrYujcBMnPCpqIbAlS3iCiZYRTGfZB8C+w7KJ2nAR9RvDWsITBlJ66SzwjVcQUkRg/lk+85WBEW5Cjx8JP3mRUmOmxdNJF41ArctEldQUTpSsW16alCyiEGE+QPY1v+T74/Wzm9xjADEq9bW1goVnxqu9y1suPrjIDnlaRRgODQASKOze5wjw/1kK6oVZVLl6rjWPLz6HVakbIkpDpHFbgVw3ngR6bZtEeX3oAjle1kQhM9YnLKlRpR0BdtYdreyCmwalwUPfepDUoYotw1ZJsa3CxGOobXf2XH5Z9zA94Ez5omxNx4ibTkzM8u0UrxnEcQ2NZ2zzF7omDiKOxZfynCrbrtTrvdxs/+UL2VfcRhDl12MAk+FwSY2HdfcHWomycyKsIKn0lX/hm9MUxftk5otP8kXrb4wsE08FiBTgad8DzP7HJQtCPh64o4rxtEWu5WSNVsc7Zl5Y1BPBRXmo2yhGy5qfV9xebvt6UVJyO96gf2UFWn6/qL5F2q2pOWKojGo9p1PdQkDvgLln6bPt1Vj1TFB+d0r0cAykVbn3X2f6JPabfBs44VIr+/qB8zlqVd9sVHmP2s1ipWU3aF4T12cewGOK56o29J9N1wqg1HqN4u9KlfvzkXZAu/Oa6qSa8ezHZd/flIyWLlFhr+zPUR9ll+GUH1k/QsveIpAuhdeeCHMxuqE9HXc05Bo4cAvmand14ePVPVld1N2dUwq1ldSU6jPzuvXIpaff17cksChZY+H9+Xnn4tYJ75JPxO8/SyWlIWUhfGzEEPq0nlbml+OgYzVJXlqNmVfdmda4cndqUrtXinKFQP5b/iynLl18W8Rlwcakv/ddvmStozAVi3y1Kseon5/lwJNHNMxcYXTeOrdf+AuDxOsSJMAbftE+9ILXNUii/uTDfvmDFmb5oVnPxP4skVlCwMiCVkYLNFjTVRS2aIKT8VFb0ONqmTdFkdzZt64vNa+1yLKpjtVEmDtU321hvfizvv+PPFNbrLMyStHi+Z2rgriYuQmxyhfqkTcQ4+u4iYef5Y0YuZS6uKXiYvnba3IT4KI8Y0JJZQnxA306Cou7ifrsLbS9om3tbUeaDRxSN+JE+jRVTx29MDE+OVAYx6ZqRWrKBJTYBsvPivKhhPo7iqy4r1Ud4TiO3yr3+yojzy5+x6cQHdXEeAPUbNtlZSU3ZnKfL7CCXR3FQHSfdvEBez3SjSwC0U/2P+4g/++ee42mOCTWPwArE2zZdlxsT/vtodxAx1dxY4Mf8fvy0iAit+H5lNSTuedlAdcYaWrq6jfhKzlOp5GXbzPua+wOCU7r1acQI+uImT7bi5zX7MEnV5y/7EIiys8t627qwiPff8OkN95a5VRFCFyrf7Ke0V1FTelpxX73wF4sGjJ2v0/3ISPm/13s/8A" alt="" />

A multi-digit column addition is written on the blackboard, but the sum is not necessarily correct. We can erase any number of the columns so that the addition becomes correct. For example, in the following addition, we can obtain a correct addition by erasing the second and the forth columns.

aaarticlea/webp;base64,UklGRjwIAABXRUJQVlA4TC8IAAAvPEEdABqq2v65rZz/Dc096Ap0BcLCpqbaNEEjhQkdtFXIKL0IiYg4ZZvANgERAQGBeVz+c5pn0Lb0nvzTE+c5Jb1n++4vXYq2bW1mvRtiD6yAFUSjY2NPR6I4DhU1NSpqeonCYP7pvRcMAvGJV4q2f41d/TbEHlgBK0Cjx45NR6KIGzUqXR11TnpQaZi5hVtSuCUFg0Ck/PoPwY0kRVLFHkNXxfHl1Ac0eRkqrvDPFf7RfOsaYS1ta3AiHcva0vvwuhJAIzH4IZUCQcT9Qf9BUx/586CMIAUF/UiYgJrza3HvEu9H3t2IvasOK5YfPjA/QLN6AQO9dOPGyPtRcFmMcBo74SgUBAFfvQRoJuqQ+4ziY5AAgy7kfRTVEUybuTPa0ZINd5osq5cFjo/NHgGGAzpOZCEiIpGew3WkK6XgXwImzcuTPzIQL5Igm0PyPuKM220irlMPD04XjrIaD3erXt5WgxmJjrCDX/ZfMh1Q8yA0Wy/9o4V5sYQl/UG4jiTL/ZeAsnkCRvoSSFdaCl94H0lWMokNmtUP8OCvTT5Cd0/gNQV3DXbwyqwMB7RM5eET0DN+c2Z+g9vgjlZnPnLfCM0WroGgu0zeR8dSPxegZSCNEFu6EUDHSEY0O4SNBWAVTjho7+A4jI5QVC+JuVynj2hHyvG1BgCjLIc4ga1Vyfixvicch9FRw0AGsT7RQnMfjzwvEVDEAgA90+u5K9bW8BADzOE6TI56Tq8nJqCVqoWmPj4kYDLWhd/xiuIIsl1oa33yetpNcCBJVguONJ88j/FwB0SLOTO9Gfqo5ICUbg4Jzez/sPqDQJIUQbWJsIXfZ2U84LhsSRkq3Mc/wxnzH+KaJVyDJM7Fzkau2/mB91FLeFehGwUbOxsOcqAOtBD43ZbiA5sO+HDhdw7HcfCqF4JQSiiFQA0vFdUJKYiID/8S72OUlIiIJCYCGCVBkJYUH9hwAL6VwhW4n7qlSc6wlZ6lXE19Ia74TSfNJQIcTM357XYhkGQdqKVsnGXzVvBDJF0EUEsMnFCQSstH3B2Auk2Bl58AQNXmnhWelqRk5qJVAgyD98yDUSkllcbQjP0z4QiqNsvCtPGONKsXQFA/AL+LSIjhDeCMzEkjtZfwJxCMfmbHSBYi82p4Qlqd2Wn4gnqM+ztsCWurpSKW5RDAB9dswYhsmKBZo1kE2NKNcAN5XYpU2HhH2X0vc1dxUgftZfWcqqsCQLP6ET5GLVxFO9KH1x8EekYymFdRrYcRwNq9jhCwJeTFzgLTJRBgGLxluNbuEOh4orTVhXADP0Y6bLihhnNSS2Uebs8qTrr0bdW3NwDH20hAGUojuX4uAICWl+/Oq6xekn5+bRWsYa1L2BRVuavu7xapP5Ly8ODuLoEAw+A9J+oRwNap4ZGPfpa+2sB2uvrHizge3ibi5xVnSGiM1yGA666IsnrxlAx0Fw6CYOrDNwAdLxeqZ1IDxIPxe4QYN/N5t3BRi1JiAaWkp5XSIHR1elsCAYbB40MlBDHsNUG/DEdQiov15Ub7yZ67oTrBJ/MaJZV2cRbcBRhfSrMRwpJuXIUTCL2+Jy8cl0FEIjXbus+7R+6XxIep5rbtAgyDa2YaIELomvQG+6lk5lsdWrO/71shA2v29wOrM5fW76lhUKbXz8REBoLsMwEASFf6drtwfN9LGSpQVCeTWHkdb1uSh7vifutzGWKOTVHXp/rjidGUcqbEwOONcQzdB7ddAB9cMyuH7898xMALIZh+RVhPy5ynkC/hbpFiutOFaijT5d27d8+s6vo9xQkKfRp9EvzASYl69+TaXSVz1akiFiDJ6rtqeiurl8IXYPZ6vAY7SE0Eej4N1wSh66+4qSeCCFlEQYgk3clPSyCAD/4twV4DspV1RmRcNPf6BtupSnxyOXny8KRYTnwHOTjM66tWVCuZTfN7nx1vW/KnoUpfAc1CDoWrmgRanmzRxQqamX7goE1LIYAPnq7UAHMA/6iA/EeBDWzrD1fgd4LqElHzQPpE3PY9PPhrmuWnIWZaqMnBjN035pfMpF0EEB1i/hve+LnzMW7Nr3npSv4hSyGADz5pw06bCDQ8IS3qHcIGttXVX94PEIRSgoBsSMiueoJeC546/NdmahK1nHweKjtwgiCPTxWa2fdC9uS7yVjR88732Emc8wfM+tkSjpfY3nM5BPDBV2kyElkXeSN5yHAEeV3a/AVqTbu7cTxnLVzIuItVKNO0Tsh9pqQ8Xf4vFgkwD95KLlaXRZq6QriCjk9nrqpTBFy0zNmXP8+ff11CPsb2cOY5f7MEnLr9Bes4vLFz36+VJeTY9j62h4NrW/8vAQ//38RlAOAhO1/w5hk33zDXrEGUsfXjabY2eerEJFabBBgGNwhxGDxkNyx284ybb5jveAEicnCYrBJgCNl5+u8yeMhuWOzmGTffMNcsge/PpDy5mprnN7sE8JCdC3EaPGQ3LDnyjJtvmGs+DcPwUidNC60SYAjZuRCnwUN2viHKM27DhvnOt56SYWdIIe2DFlolgIfsBiEug4fsvHjGzTfMNYsfVDW12c7oeLizSgAf3CDEZfCQnZch4zZsmAP/+BEe/EsWCTCE7AYhLoOH7Lx4xs03zLOrJV8tdVeEZl0oawTwwQ1CnAYP2fliN8+4+Yb5KAmC7BJnZyq4axYJ4IMbhDgNHrLzxW6ecfMN8/RKKIzApI0EHLTJJgF8cIMQp8FDdr7YzTNuvmGuWYKIUNkk9hKbuW60SAAP2Q1CHMAWhewAsLGM+/hHzJfL+r7ZJIAPbhByuXGu8A8AAA==" alt="" />

Your task is to find the minimum number of columns needed to be erased such that the remaining formula becomes a correct addition.

Input

There are multiple test cases in the input. Each test case starts with a line containing the single integer n, the number of digit columns in the addition (1 ⩽ n ⩽ 1000). Each of the next 3 lines contain a string of n digits. The number on the third line is presenting the (not necessarily correct) sum of the numbers in the first and the second line. The input terminates with a line containing “0” which should not be processed.

Output

For each test case, print a single line containing the minimum number of columns needed to be erased.

Sample Input

3
123
456
579
5
12127
45618
51825
2
24
32
32
5
12299
12299
25598
0

Sample Output

0
2
2
1

Hint

Source

ATRC2017

开始是用贪心写的,总感觉自己没错,贪心的判断写了一层又一层最后还是错了。

结束后看了学长的代码,用dp写的,顿时有种恍然大悟的感觉,考试的时候钻进死胡同了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define debug(a) cout << #a << ": " << a << endl
int main() {
int n;
while( cin >> n ) {
if( !n ) {
break;
}
string s1, s2, s3;
cin >> s1 >> s2 >> s3;
int a[], b[], c[];
for( int i = ; i < n; i ++ ) {
a[i] = s1[i] - '';
b[i] = s2[i] - '';
c[i] = s3[i] - '';
}
int dp[];
memset( dp, , sizeof(dp) );
for( int i = n - ; i >= ; i -- ) {
if( ( a[i] + b[i] ) % == c[i] ) { //如果当前直接或者进位后间接满足就置为1
dp[i] = ;
}
for( int j = i + ; j < n; j ++ ) {
int jinwei = ( dp[j] ) && ( a[j] + b[j] > c[j] ); //后面是否有可以进位的
if( ( a[i] + b[i] + jinwei ) % == c[i] ) {
dp[i] = max( dp[i], dp[j] + ); //有的话就更新i位置的dp值
}
}
}
int ans = n;
for( int i = ; i < n; i ++ ) {
if( a[i] + b[i] <= c[i] ) {
ans = min( ans, n - dp[i] );
}
}
cout << ans << endl;
}
return ;
}

2018湖南多校第二场-20180407 Column Addition的更多相关文章

  1. 2018湖南多校第二场-20180407 Barareh on Fire

    Description The Barareh village is on fire due to the attack of the virtual enemy. Several places ar ...

  2. 2019牛客多校第二场 A Eddy Walker(概率推公式)

    2019牛客多校第二场 A Eddy Walker(概率推公式) 传送门:https://ac.nowcoder.com/acm/contest/882/A 题意: 给你一个长度为n的环,标号从0~n ...

  3. 2018 Multi-University Training Contest 2 杭电多校第二场

    开始逐渐习惯被多校虐orz  菜是原罪 1004  Game    (hdoj 6312) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6312 虽然披着 ...

  4. 2019年湖南多校第一场||2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)

    第一场多校就打的这么惨,只能说自己太菜了,还需继续努力啊- 题目链接: GYM链接:https://codeforces.com/gym/101933 CSU链接:http://acm.csu.edu ...

  5. hdu6312 2018杭电多校第二场 1004 D Game 博弈

    Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. 2018牛客多校第二场a题

    一个人可以走一步或者跳x步,但不能连着跳,问到这个区间里有几种走法 考虑两种状态  对于这一点,我可以走过来,前面是怎么样的我不用管,也可以跳过来但是,跳过来必须保证前一步是走的 dp[i][0]表示 ...

  7. 2018杭电多校第二场1003(DFS,欧拉回路)

    #include<bits/stdc++.h>using namespace std;int n,m;int x,y;int num,cnt;int degree[100007],vis[ ...

  8. 2019 湖南多校第一场(2018~2019NCPC) 题解

    解题过程 开场shl过B,C,然后lfw写J,J WA了以后shl写A,但是因为OJ上空间开小WA了,而不是MLE?,J加了特判过了.之后一直在检查A错哪了,直到qt发现问题改了空间,浪费许多时间,但 ...

  9. 2014多校第二场1011 || HDU 4882 ZCC Loves Codefires (贪心)

    题目链接 题意 : 给出n个问题,每个问题有两个参数,一个ei(所要耗费的时间),一个ki(能得到的score).每道问题需要耗费:(当前耗费的时间)*ki,问怎样组合问题的处理顺序可以使得耗费达到最 ...

随机推荐

  1. Node.js 环境搭建及简单应用

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型.如果你想创建自己的服务,那么Node.js是一个非 ...

  2. Web前端开发工程师课程大纲

    PHP程序员雷雪松整理出来的一套独一无二的Web前端开发课程.本套Web前端开发课程专门为想励志成为优秀web前端工程师的学习者而总结归纳的,本套Web前端课程舍弃了一些不常用的即将废弃的HTML标签 ...

  3. .netcore持续集成测试篇之测试方法改造

    系列目录 通过前面两节讲解,我们的测试类中已经有两个测试方法了,总体上如下 public class mvc20 { private readonly HttpClient _client; publ ...

  4. 自己动手实现MQTT协议

    写在前面 前段时间弄IoT相关的东西,系统学习了一下 MQTT 协议,在此分享出来. 本文先是对 MQTT 协议做了简单的介绍:接着是对 MQTT协议的内容做了较为全面的解读:最后使用 Python ...

  5. c# 将dwg文件转化为pdf

    https://blog.csdn.net/mywaster/article/details/50220379 最近做一个项目,要求将dwg文件转化为pdf,开发工具VS2010 + AutoCad ...

  6. Android常用库源码解析

    图片加载框架比较 共同优点 都对多级缓存.线程池.缓存算法做了处理 自适应程度高,根据系统性能初始化缓存配置.系统信息变更后动态调整策略.比如根据 CPU 核数确定最大并发数,根据可用内存确定内存缓存 ...

  7. 记一次mysql数据库失而复得过程

    背景: 由于是自己买的vps搭建的博客,用的是军哥的一键lnmp源码编译安装的,文章也就几篇,对备份并不太重视,想着等服务器快到期的时候备份一下不就行了. 后来在该服务器上测试lnmp分别编译编译安装 ...

  8. Go类型别名与类型定义区别

    类型别名和自定义类型区别 自定义类型 //自定义类型是定义了一个全新的类型 //将MyInt定义为int类型 type MyInt int 类型别名 //类型别名规定:TypeAlias只是Type的 ...

  9. JavaScript的垃圾回收机制与内存泄漏

    常用的两种算法: 引用计数(新版浏览器已弃用,弃用原因:会出现循环引用的情况,无法进行垃圾回收,导致内存泄漏) 标记清除 引用计数法 引用计数,顾名思义一个对象是否有指向它的引用,即看栈中是否有指向要 ...

  10. 程序与CPU

    CPU中共有四大组件: 寄存器 控制器 运算器 时钟 寄存器:存取数值(存东西的) 控制器:负责将内存(寄存器)中的数据进行读入和写出(控制寄存器 协调者) 运算器:里面是逻辑运算单元,协助寄存器和控 ...