【Link】:https://csacademy.com/contest/round-39/task/reconstruct-sum/

【Description】



给你一个数字S;

让你找有多少对A,B

满足A+B=S

然后再给你一个01串,表示某一位在算加法的时候有没有进位;

在上面的A,B中筛选出符合这个01串的A,B;

输出对数.

【Solution】



对S的每一位考虑;

从后往前

如果该位x的后一位进了一位到这一位;

则两个加数在这一位上的需要的数字为x=x-1,否则仍为x

然后看看这一位会不会产生进位;

如果产生了进位;

把x加上10;

即x+=10

我们考虑A在这一位的数字;

假设是t



0<=t<=9

0<=x-t<=9

则有

x-9<=t<=x

对x 分类讨论;



x>=10



x-9<=t<=9

x<=9



0<=t<=x;

乘法原理做一下就好;

(对于x<0的情况,直接输出无解)



【NumberOf WA】



0



【Reviw】

【Code】

#include <bits/stdc++.h>
#define int long long char s1[20],s2[20];
int a1[20],a2[20];
int len; main(){
scanf("%s",s1+1);
len = strlen(s1+1);
for (int i = 1;i <= len;i++)
a1[i] = s1[i]-'0';
for (int i = 1;i <= len-1;i++)
scanf("%lld",&a2[i]);
a2[len] = 0;
int x = 0,ans = 1;
for (int i2 = 1,i1 = len;i2 <= len;i2++,i1--){
int temp;
temp = a1[i1]-x;
if (a2[i2]==1) {
temp+=10;
x = 1;
}else x = 0;
if (temp<0) return puts("0"),0;
if (temp <= 9)
ans = ans*(temp+1);
else
ans = ans*(9-(temp-9)+1);
}
printf("%lld\n",ans);
return 0;
}

【CS Round #39 (Div. 2 only) C】Reconstruct Sum的更多相关文章

  1. 【CS Round #39 (Div. 2 only) D】Seven-segment Display

    [Link]:https://csacademy.com/contest/round-39/task/seven-segment-display/ [Description] 0..9各自有一个数字, ...

  2. 【CS Round #39 (Div. 2 only) B】Circle Elimination

    [Link]:https://csacademy.com/contest/round-39/task/circle-elimination/ [Description] [Solution] 把n个点 ...

  3. 【CS Round #39 (Div. 2 only) A】Removed Pages

    [Link]: [Description] [Solution] 每读入一个x; 把a[(x-1)/2]置为1即可; 统计1的个数 [NumberOf WA] [Reviw] [Code] /* */ ...

  4. 【CS Round #37 (Div. 2 only) D】Reconstruct Graph

    [Link]:https://csacademy.com/contest/round-37/task/reconstruct-graph/statement/ [Description] 给你一张图; ...

  5. 【CS Round #36 (Div. 2 only) A】Bicycle Rental

    [题目链接]:https://csacademy.com/contest/round-36/task/bicycle-rental/ [题意] 让你从n辆车中选一辆车; 每一辆车有3个属性 1.到达车 ...

  6. 【CS Round #37 (Div. 2 only) B】Group Split

    [Link]:https://csacademy.com/contest/round-37/task/group-split/ [Description] 让你把一个数分成两个数a.b的和; (a,b ...

  7. 【CS Round #37 (Div. 2 only) A】Boring Number

    [Link]:https://csacademy.com/contest/round-37/task/boring-number/ [Description] 让你找离平均数最近的一个数的下标; [S ...

  8. 【CS Round #46 (Div. 1.5) E】Ultimate Orbs

    [链接]链接 [题意] n个人从左到右站在一条直线上.每个人都有一个能力值g[i],然后每个人可以将相邻的一个人打败. 然后它的能力值能够增加相应的能力值(就是打败了的那个人的能力值). A能够打败B ...

  9. 【CS Round #46 (Div. 1.5) C】Set Subtraction

    [链接]h在这里写链接 [题意] 一开始有n个数字,然后有一个数字X,把每个数字都减去X,又生成N个新的数字. 然后把这2*N个数字混在一起. 告诉你这2*N个数字是什么.让你复原出原来的N个数字,以 ...

随机推荐

  1. python 爬虫简介

    初识Python爬虫 互联网 简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现 ...

  2. python 异步IO

    参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143208573 ...

  3. js实现复选框的操作-------Day41

    不知道之前的一篇为什么一直处于审核阶段.难道有哪个词语是敏感词被河蟹了? 无论了,又一次写了这篇,也算是加深记忆吧. 首先要写的是今天在进行表格数据操作时用到的对复选框checkbox的全选和全不选, ...

  4. OpenCV学习笔记09--通过cvPtr2D或指针算法绘制图形

    练习:创建一个1000*1000的三通道图像,将其元素所有置0.以(200,50)和(400,200)为顶点绘制一个绿色平面 我们能够用两种方法来实现这一功能,一个是使用cvPtr2D,可是因为使用了 ...

  5. Android中System.currentTimeMillis()

    函数: System.currentTimeMillis(): 功能:产生一个当前的毫秒,这个毫秒事实上就是自1970年1月1日0时起的毫秒数,Date()事实上就是相当于Date(System.cu ...

  6. Ftp的上传和下载

    百度知道的那个在“ 绑定和SSL设置”模块,选择的是允许 如果一直找不到网页的话,就是这里错了:反正就是牵扯到一堆防火墙的设置(最后我也没搞成) 选择成无就OK了:一切迎刃而解............ ...

  7. JS取出两个数组的不同或相同元素

    JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合 ...

  8. mysql省市区数据库表源码

     下载  一:创建表 1省: create table CREATE TABLE `provinces` ( `id` ) NOT NULL AUTO_INCREMENT, `provinceid` ...

  9. qt qlineedit只输入数字

    lineEdit->setValidator(new QRegExpValidator(QRegExp("[0-9]+$")));

  10. 剑指offer_面试题6_重建二叉树(分解步骤,逐个击破)

    题目:输入某二叉树的前序遍历和中序遍历的结果.请重建出该二叉树.如果输入的前序遍历和中序遍历的结果中都不含反复的数字. 比如:输入前序遍历 {1,2,4,7,3,5,6,8} 和中序遍历序列 {4,7 ...