zoukankan      html  css  js  c++  java
  • 【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
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    storm原理写得比较好的文章
    maven设置jdk版本
    项目中记录log4j记录日志
    eclipse jadeclipse配置
    Maven使用说明
    crond不执行原因分析
    空调遥控器图标含义
    window7开放端sqlserver端口
    servlet仿struts参数注入
    cocos 2dx-js3.5整合anySDK
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626158.html
Copyright © 2011-2022 走看看