• usaco-crypt1-pass


    这个想了半天,终于过了:

    /*
    ID: qq104801
    LANG: C++
    TASK: crypt1
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <assert.h>
    
    void debug_dummy()
    {
        return;
    }
    
    int n;
    int d[10];
    
    int numlen(int x)
    {    
        int l=1;
        while(x/10)
        {
            l++;
            x/=10;
        }
        //printf("%d %d
    ",x,l);
        return l;
    }
    
    bool iscrypt(int x,int m)
    {   
        while(m--)
        {
            if(!d[x%10] || x==0)
                return false;
            x/=10;        
        } 
        if (x!=0)return false;   
        return true;
    }
    
    bool check(int a,int b)
    {
        int p,q;
        p=a*(b/10);
        q=a*(b%10);
        if (!iscrypt(a,3) || !iscrypt(b,2) || !iscrypt(a*b,4))
            return false;
        if (!iscrypt(p,3) || !iscrypt(q,3) )
            return false;
        return true;
    }
    
    void test()
    {
        int sum=0;
        FILE *fin = fopen ("crypt1.in", "r");
        FILE *fout = fopen ("crypt1.out", "w"); 
        fscanf(fin,"%d",&n);
        for(int i=0;i<10;i++)
            d[i]=0;
        for(int i=0;i<n;i++)
        {
            int t;
            fscanf(fin,"%d",&t);
            d[t]=1;
            //printf("%d %d
    ",t,d[t]);        
        }
        for(int i=100;i<1000;i++)
            for(int j=10;j<100;j++)
            {
                if ((i==222) && (j==22))
                    debug_dummy();
                if (check(i,j))
                {
                    sum++;
                    //printf("%d*%d=%d ==>%d   p1:%d p2:%d
    ",i,j,i*j,i*(j%10)+i*(j/10)*10,i*(j%10),i*(j/10));
                }
            }
        //printf("sum:%d
    ",sum);
        fprintf(fout,"%d
    ",sum);
        fclose(fin);
        fclose(fout);
    }
    
    main () {    
        test();    
        exit (0);
    }

    测试用例:

    USER: ll tom [qq104801]
    TASK: crypt1
    LANG: C++
    
    Compiling...
    Compile: OK
    
    Executing...
       Test 1: TEST OK [0.011 secs, 3500 KB]
       Test 2: TEST OK [0.008 secs, 3500 KB]
       Test 3: TEST OK [0.008 secs, 3500 KB]
       Test 4: TEST OK [0.011 secs, 3500 KB]
       Test 5: TEST OK [0.005 secs, 3500 KB]
       Test 6: TEST OK [0.003 secs, 3500 KB]
       Test 7: TEST OK [0.014 secs, 3500 KB]
    
    All tests OK.
    
    Your program ('crypt1') produced all correct answers! This is your submission #4 for this problem. Congratulations!
    
    Here are the test data inputs:
    
    ------- test 1 ----
    5
    2 3 4 6 8
    ------- test 2 ----
    4
    2 3 5 7
    ------- test 3 ----
    1
    1
    ------- test 4 ----
    7
    4 1 2 5 6 7 3
    ------- test 5 ----
    8
    9 1 7 3 5 4 6 8
    ------- test 6 ----
    6
    1 2 3 5 7 9
    ------- test 7 ----
    9
    1 2 3 4 5 6 7 8 9
    
    Keep up the good work!
    Thanks for your submission!
    /***********************************************

    看书看原版,原汁原味。

    不会英文?没关系,硬着头皮看下去慢慢熟练,才会有真正收获。

    没有原书,也要网上找PDF来看。

    网上的原版资料多了去了,下载东西也到原始下载点去看看。

    你会知其所以然,呵呵。

    ***********************************************/

  • 相关阅读:
    软件设计图工具
    属性读取
    socket ReceiveAsync
    Type.GetType()跨程序集反射
    实例化类的时候代码运行顺序
    C# 互斥对象--Mutex---线程同步
    【vim】vim配置教程+源码
    【框架】SPI四种模式+通用设备驱动实现
    【网络】NFS网络文件系统
    【C语言】函数不定长参数
  • 原文地址:https://www.cnblogs.com/dpblue/p/3948480.html
Copyright © 2020-2023  润新知