UESTC 1251 谕神的密码 贪心

ProLightsfx 2015-12-26 129 12/26

 

谕神的密码 贪心

Source

第七届ACM趣味程序设计竞赛第二场(正式赛)B

My Solution

w9=s/9;

y9=s-w9*9;

贪心, 最大的前面999....y9...最小的前面为1.......y9 99999

主要是上面这样,然后有几个地方y9=0是额外讨论(1......0899、999.....),没有0时二外讨论,只有1个0笔者也额外讨论了

虽然长,但很多地方差不多,所以好多地方是复制上面部分,然后再修改

比赛的时候,由于先输出最多值,再输出最小值,结果死活不能Accepted

因为题目讲先输出最小值,再最大值。两个小时啊(此水题不过去,自己过意不去,所以硬来),找出这么个bug,我也是欲哭无泪啊,以后多注意

输出顺序,不仅仅是输出格式

我记得高三有一次月考,我来了个F合=ma^2把一个大题错了 和这次感觉很像(┬_┬)

#include 
#include 
#include 
#define LOCAL
using namespace std;

int main()
{
    #ifdef LOCAL
    freopen("a.txt","r",stdin);
    #endif
    int T,n,s,w9,y9;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&n,&s);
        w9=s/9;
        y9=s-w9*9;
        if(n==0) printf("-1 -1");
        if(s==0) {if(n==1)printf("0 0");else printf("-1 -1");}
        else if(s>9*n) printf("-1 -1");
        else if(s==9*n){
            for(int i=1;i<=n-1;i++)
                printf("9");
            printf("9 ");
            for(int i=1;i<=n;i++)
                printf("9");

        }
        else{
            if(n-w9-1==0) {
                    if(y9==0){
                        printf("18");
                        for(int i=1;i<=w9-1;i++)
                            printf("9");
                    }
                    else{

                        printf("%d",y9);
                        for(int i=1;i<=w9;i++)
                            printf("9");
                    }

            }
            else{

                printf("1");
                if(y9==0){
                    if(n-w9-2==0){
                        printf("08");
                        for(int i=1;i<=w9-1;i++)
                            printf("9");
                    }
                    else{
                        for(int k=1;k<=n-w9-2;k++)
                            printf("0");
                        printf("08");

                        for(int i=1;i<=w9-1;i++)
                            printf("9");
                    }
                }


                else{
                    if(n-w9-2==0){
                        printf("%d",y9-1);
                        for(int i=1;i<=w9;i++)
                            printf("9");
                    }
                    else{
                        for(int k=1;k<=n-w9-2;k++)
                            printf("0");
                        printf("%d",y9-1);
                        for(int i=1;i<=w9;i++)
                            printf("9");
                    }
                }

            }
            printf(" ");
            for(int i=1;i<=w9;i++)
                printf("9");
            printf("%d",y9);
            for(int j=1;j<=n-w9-1;j++)
                printf("0");

        }


        if(T) printf("n");
    }

    return 0;
}

 

非特殊说明,本站所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -
Tag:

ProLightsfx

11月16日01:52

最后修改:2024年11月16日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论