【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. Python3 利用POP3与smtplib进行计算机远程控制

    初习,代码有不足之处,欢迎指出. 跟大家分享的是,通过发送端发送cmd命令,从而对接收端进行cmd命令的控制. #接收端代码 from poplib import POP3 import time,o ...

  2. Intel NUC迷你机2019年底迎来i9 8核心16线程

    Intel处理器这两年全年提速,虽然10nm新工艺受阻,但核心数在全面增加,从发烧到桌面到低功耗莫不如此,如今连NUC迷你机也要全新进化了,一年多之后就会迎来8核心16线程,而且也划入i9序列. 根据 ...

  3. iptables指南

    在了解iptables之前我们先了解一下 防火墙 的概念防火墙是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网,防火墙也是一种位于内部网络与外部网络之间的网络安全系统 ...

  4. Linux Virtual Server技术

    1 LVS简单介绍 Linux VirtualServer是一个高扩展和高可用性server,在一个真正server的集群中构建而成,包括Linux操作系统中的负载均衡. server的架构对于终端用 ...

  5. JAVA 不同类载入器命名空间的理解

                曾经一直有这样一个疑惑: 都说在JAVA中,由不同类载入器载入的类在虚拟机中位于不同的命名空间下,不同命名空间下的类相互不可见. 这让我产生了一个迷惑:假设有一个类A使用了ja ...

  6. linux命令su与su-的差别

    su命令和su -命令最大的本质差别就是: su仅仅是切换了root身份.但Shell环境仍然是普通用户的Shell. 而su -连用户和Shell环境一起切换成root身份了. 仅仅有切换了Shel ...

  7. POJ 1887 Testingthe CATCHER (LIS:最长下降子序列)

    POJ 1887Testingthe CATCHER (LIS:最长下降子序列) http://poj.org/problem?id=3903 题意: 给你一个长度为n (n<=200000) ...

  8. CentOS下安装C/C++开发工具包的最佳方式

    如果你使用的是 Fedora, Red Hat, CentOS, 或者 Scientific Linux 系统,使用下面的命令安装GNU的C/C++开发包和编译器. # yum groupinstal ...

  9. 目前常见的三种SQL分页方式:

    --top not in方式 select top 条数 * from tablename where Id not in (select top 条数*页数 Id from tablename) - ...

  10. Linux下解压缩文件命令总结

    ---------------------------------------------tar命令: -v 可视化-c 新建包-f 指定文件名(除非你用默认用户名)-x 解压target.tar-r ...