【CS Round #39 (Div. 2 only) C】Reconstruct Sum
【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的更多相关文章
- 【CS Round #39 (Div. 2 only) D】Seven-segment Display
[Link]:https://csacademy.com/contest/round-39/task/seven-segment-display/ [Description] 0..9各自有一个数字, ...
- 【CS Round #39 (Div. 2 only) B】Circle Elimination
[Link]:https://csacademy.com/contest/round-39/task/circle-elimination/ [Description] [Solution] 把n个点 ...
- 【CS Round #39 (Div. 2 only) A】Removed Pages
[Link]: [Description] [Solution] 每读入一个x; 把a[(x-1)/2]置为1即可; 统计1的个数 [NumberOf WA] [Reviw] [Code] /* */ ...
- 【CS Round #37 (Div. 2 only) D】Reconstruct Graph
[Link]:https://csacademy.com/contest/round-37/task/reconstruct-graph/statement/ [Description] 给你一张图; ...
- 【CS Round #36 (Div. 2 only) A】Bicycle Rental
[题目链接]:https://csacademy.com/contest/round-36/task/bicycle-rental/ [题意] 让你从n辆车中选一辆车; 每一辆车有3个属性 1.到达车 ...
- 【CS Round #37 (Div. 2 only) B】Group Split
[Link]:https://csacademy.com/contest/round-37/task/group-split/ [Description] 让你把一个数分成两个数a.b的和; (a,b ...
- 【CS Round #37 (Div. 2 only) A】Boring Number
[Link]:https://csacademy.com/contest/round-37/task/boring-number/ [Description] 让你找离平均数最近的一个数的下标; [S ...
- 【CS Round #46 (Div. 1.5) E】Ultimate Orbs
[链接]链接 [题意] n个人从左到右站在一条直线上.每个人都有一个能力值g[i],然后每个人可以将相邻的一个人打败. 然后它的能力值能够增加相应的能力值(就是打败了的那个人的能力值). A能够打败B ...
- 【CS Round #46 (Div. 1.5) C】Set Subtraction
[链接]h在这里写链接 [题意] 一开始有n个数字,然后有一个数字X,把每个数字都减去X,又生成N个新的数字. 然后把这2*N个数字混在一起. 告诉你这2*N个数字是什么.让你复原出原来的N个数字,以 ...
随机推荐
- vue组件递归的一些理解
自己做个小项目练手,需要用到组件递归,网上查了一些资料,每个代码片段都认识,但是连起来,就一团浆糊. 既然人傻就多思考吧.不明白的点有以下: 1.组件怎么自己调用自己,函数的递归是就是在functio ...
- perl模块
查看perl模块安装目录:find `perl -e ‘print “@INC”‘` -name ‘*.pm’ -print 为什么要写或要模块呢?简言之:代码重用,更多见于写一组工具集,有很多地方是 ...
- celery 学习
1. 列出计划的ETA任务(worker) celery -A proj inspect scheduled 参考文档:http://docs.celeryproject.org/en/latest/ ...
- Java基础学习总结(9)——this关键字
一.this关键字 this是一个引用,它指向自身的这个对象. 看内存分析图: 假设我们在堆内存new了一个对象,在这个对象里面你想象着他有一个引用this,this指向这个对象自己,所以这就是thi ...
- 把握linux内核设计思想(三):下半部机制之软中断
[版权声明:尊重原创.转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 中断处理程序以异步方式执行,其会打断其它重要代码,其执行时该中 ...
- CCNP路由实验之六 动态路由协议之IS-IS
CCNP路由实验之六动态路由协议之IS-IS 动态路由协议能够自己主动的发现远程网络.仅仅要网络拓扑结构发生了变化.路由器就会相互交换路由信息,不仅能够自己主动获知新添加的网络.还能够在当前网络 ...
- 11.ng-init
转自:https://www.cnblogs.com/best/tag/Angular/ 初始化 <p ng-init="test=1" ng-repeat="a ...
- 35.QQ大数据模型
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- C++ BigInteger模板
#include <cstdio> #include <cstring> #include <string> #include <iostream> # ...
- C/C++(C++封装)
封装 当单一变量无法完成描述需求的时候,结构体类型解决了这一问题.可以将多个类型打包成一体,形成新的类型.这是 c 语言中封装的概念.但是,新类型并不包含,对数据类的操作.所的有操作都是通过函数的方式 ...