zoukankan      html  css  js  c++  java
  • 2021icpc第二场网络赛M Addition(模拟)

    解题思路

      参考了这个博客
      比赛的时候一直在想先把a和b相加之后怎么搞,而没有想到在a和b相加的过程中怎么搞。用一个变量存储进位,然后分几种情况讨论。
      如果两位加起来加上进位结果是0和1,不用进位。
      如果结果是2,那么需要进位,并且这一位结果是0。如果本位的sgn为正,那么如果下一位的sgn也是正,那么就进1,如果是负呢,如果下一位大于1,就减1,否则的话就往后借位。如果本位sgn为负,那么如果下一位也是负,同上,否则也需要减1和借位。
      如果是3,和上面类似,只是这一位结果是1。
      如果是-1,表示这一位的数字不够了,需要往后借一个与自己符号相反的位,并且这一位得是1,因为后面的数是当前数的二倍。

    代码

    const int maxn = 1e2+10;
    int t[maxn], a[maxn], b[maxn], c[maxn];
    int main() {
        IOS;
        int n; cin >> n;
        for (int i = 1; i<=n; ++i) cin >> t[i];
        for (int i = 1; i<=n; ++i) cin >> a[i];
        for (int i = 1; i<=n; ++i) cin >> b[i];
        int p = 0;
        for (int i = 1; i<=n; ++i) {
            p *= t[i];
            int sum = a[i]+b[i]+p;
            if (sum<=1) {
                c[i] = 0;
                p = 0;
            }
            else if (p==2) {
                c[i] = 0;
                p = 1;
            }
            else if (p==3) {
                c[i] = 1;
                p = 1;
            }
            else if (p==-1) {
                c[i] = 1;
                p = -1;
            }
            p *= t[i];
        }
        for (int i = 1; i<=n; ++i) cout << c[i] << (i==n ? "":"
    ");
        return 0;
    }
    
  • 相关阅读:
    6种负载均衡算法
    Java中volatile关键字
    剑指offer练习
    linux系统查看IP地址,不显示IP地址或者只显示127.0.0.1
    Nginx负载均衡配置
    集群应用Session一致性实现的三种方案
    rabbitMQ学习
    JDK1.8在LINUX下安装步骤
    ecplise部署gradle web项目
    Kubernetes下的应用监控解决方案
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/15343816.html
Copyright © 2011-2022 走看看