zoukankan      html  css  js  c++  java
  • URAL 1007 Code Words

    URAL_1007

        按题目的要求依次检查各个可能出错的位置即可。

    #include<stdio.h>
    #include<string.h>
    #define MAXD 1010
    int N, M, A[MAXD], S;
    char b[MAXD];
    void checkreplace()
    {
        int i, j, k;
        for(i = 0; i < M; i ++)
            if(b[i] == '1' && (S - i - 1) % (N + 1) == 0)
            {
                b[i] = '0';
                printf("%s\n", b);
                return ;
            }
    }
    void checkremove()
    {
        int i, j, k;
        for(i = 0; i < M; i ++)
        {
            if((S + A[i]) % (N + 1) == 0)
            {
                for(j = 0; j < i; j ++)
                    printf("%c", b[j]);
                printf("0");
                for(j = i; j < M; j ++)
                    printf("%c", b[j]);
                printf("\n");
                return ;
            }
            if((S + A[i] + i + 1) % (N + 1) == 0)
            {
                for(j = 0; j < i; j ++)
                    printf("%c", b[j]);
                printf("1");
                for(j = i; j < M; j ++)
                    printf("%c", b[j]);
                printf("\n");
                return ;
            }
        }
        printf("%s", b);
        if(S % (N + 1) == 0)
            printf("0\n");
        else
            printf("1\n");
    }
    void checkinsert()
    {
        int i, j, k;
        for(i = 0; i < M; i ++)
            if((b[i] == '1' && (S - i - A[i]) % (N + 1) == 0) || (b[i] == '0' && (S - A[i]) % (N + 1) == 0))
            {
                b[i] = '\0';
                printf("%s", b);
                printf("%s\n", b + i + 1);
                return ;
            }
    }
    void solve()
    {
        int i, j, k;
        M = strlen(b);
        A[M] = S = 0;
        for(i = M - 1; i >= 0; i --)
        {
            A[i] = A[i + 1] + b[i] - '0';
            if(b[i] == '1')
                S += i + 1;
        }
        if(N == M)
        {
            if(S % (N + 1) == 0)
                printf("%s\n", b);
            else
                checkreplace();
        }
        else if(M < N)
            checkremove();
        else
            checkinsert();
    }
    int main()
    {
        scanf("%d", &N);
        while(scanf("%s", b) == 1)
        {
            solve();
        }
        return 0;
    }
  • 相关阅读:
    EXCEL 函数手册
    php 总结(11)php常用整理
    php 总结(10) PDO 连接数据库 预处理
    Dedecms 常用替换sql命令
    php 总结(9) mysql 字段 编码 相关
    解析XML【C#】
    shell安全脚本
    mysql --secure-file-priv写入文件的说明
    Typora使用技巧及markdown语法
    F-MiddlewareScan中间件扫描工具简单试用
  • 原文地址:https://www.cnblogs.com/staginner/p/2477246.html
Copyright © 2011-2022 走看看