• hdoj 4523 切蛋糕 腾讯马拉松 大数加法比较


    威威猫系列故事——过生日

    Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 803    Accepted Submission(s): 210


    Problem Description
      2月29号是威威猫的生日,由于这个日子非常特殊,4年才一次,所以生日这天许多朋友都前往威威猫家祝贺他的生日。
      大家给威威猫买了一个非常大非常大的蛋糕,蛋糕的形状是一个有n条边的凸多边形,可是威威猫的审美观有一点奇怪,他只喜欢有m条边的蛋糕,所以他要伙伴们把这个蛋糕切p次,然后给他一个只有m条边的新蛋糕。这下大家急了,这不是坑爹吗,审美观崎岖作怪。
      假设蛋糕可看成一个平面含n条边的凸多边形,每一刀必须沿直线切下去,p刀之后能给威威猫切出一个m条边的蛋糕吗?

     
    Input
    多组测试数据,每组占一行,包含3个整数n, m, p(含义如上)。
    [Technical Specification]
    3 <= n <= 10^100
    0 < m <= 10^100
    0 <= p <= 10^100
     
    Output
    每组测试数据,如果能够切出威威猫喜欢的蛋糕,请输出"YES",否则请输出"NO";
    每组数据输出一行。
     
    Sample Input
    4 5 1
     
    解题思路:1、基于多边形切割的性质,我们可以将目前的多边形一刀切成任意小于目前变数的形状,每一刀最多添加一条边。
                  所以基本模型是,n+p 和m的比较,只要n+p大于等于n就行啦
                  2、本题需要注意的就是 当m等于1或2时,不能够成立
         3、当p=0时 n等于m就行啦
    代码:
    View Code
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MAX_LEN 100
    int an1[MAX_LEN+10];
    int an2[MAX_LEN+10];
    int an3[MAX_LEN+10];
    char szLine1[MAX_LEN+10];
    char szLine2[MAX_LEN+10];
    char szLine3[MAX_LEN+10];
    int main()
    {
        int x,y,z,flat;
        int t;
        while(scanf("%s%s%s", szLine1,szLine2,szLine3)!=EOF)
        {
            int i, j;
            memset( an1, 0, sizeof(an1));
            memset( an2, 0, sizeof(an2));
            memset( an3, 0, sizeof(an3));
    
            int nLen1 = strlen( szLine1);
            for( j = 0, i = nLen1 - 1;i >= 0 ; i --) //由小到大
                an1[j++] = szLine1[i] - '0';
    
            int nLen2 = strlen(szLine2);
            for( j = 0, i = nLen2 - 1;i >= 0 ; i --)
                an2[j++] = szLine2[i] - '0';
    
            int nLen3 = strlen(szLine3);
            for( j = 0, i = nLen3 - 1;i >= 0 ; i --)
                an3[j++] = szLine3[i] - '0';
    
            for( i = 0;i < MAX_LEN ; i ++ ) 
            {  an1[i] += an3[i]; //逐位相加
                if( an1[i] >= 10 ) 
                { //看是否要进位
                    an1[i] -= 10;
                    an1[i+1] ++; //进位
                }
            }
    
    
            for( i = MAX_LEN; (i >= 0) && (an1[i] == 0); i -- ) ;
            x=i;
            for( i = MAX_LEN; (i >= 0) && (an2[i] == 0); i -- ) ;
            y=i;
            for( i = MAX_LEN; (i >= 0) && (an3[i] == 0); i -- ) ;
            z=i;
            if(z==-1)//p等于0时 会退到-1
                z=0;
            flat=1;
            if(y==0&&(an2[0]==1||an2[0]==2))//p等于1或2
                flat=0;
            else
            {
                if(x<y)
                    flat=0;
                t=1;//标记是否相等
                if(x==y)
                {
                    for(i=x;i>=0;i--)
                        if(an1[i]>an2[i])
                        {    
                            t=0;
                            break;
                        }
                        else if(an1[i]<an2[i])
                        {
                            flat=0;
                            t=0;
                            break;
                        }
                }
            }
    
            if(flat&&(((z==0&&an3[0]>0)||z>0)  ||(z==0&&an3[0]==0&&t==1) ))
                printf("YES\n");
            else
                printf("NO\n");
        }
        return 0;
    }

    最后的判断括号 太多,以至于弄混了,错了几次,还有就是比较时不能单纯比较一方

  • 相关阅读:
    在nginx环境下搭建基于ssl证书的websocket服务转发,wss
    在nginx环境下搭建https服务,代理到本地web项目
    java CountDownLatch报错java.lang.IllegalMonitorStateException: null
    https本地自签名证书添加到信任证书访问
    10013: An attempt was made to access a socket in a way forbidden by its access permissions
    chrome 报错 ERR_CERT_AUTHORITY_INVALID
    SDKMAN一个基于命令行界面的SDK用户环境管理程序
    springboot放到linux启动报错:The temporary upload location [/tmp/tomcat.8524616412347407692.8111/work/Tomcat/localhost/ROOT/asset] is not valid
    netty-websocket-spring-boot-starter关闭报错 io/netty/channel/AbstractChannel$AbstractUnsafe io/netty/util/concurrent/GlobalEventExecutor
    HTML DOM addEventListener() 方法
  • 原文地址:https://www.cnblogs.com/zibuyu/p/2987773.html
Copyright © 2020-2023  润新知