zoukankan      html  css  js  c++  java
  • 1064. 朋友数(20)

    原题: https://www.patest.cn/contests/pat-b-practise/1064

    思路: 最大的朋友证好是4 * 9 = 36, 开个40的整型数组, 读取的时候每个
    数当成字符串来读, 随后就遍历计算累加和, 存在整型数组里.

    实现:

    #include <stdio.h>
    #define LEN 40
    int main (void) {
        int n;
        char nstr[5];       // 每个数
        int fno[LEN] = {0}; // 朋友证号
        int dfno = 0;       // 不同的朋友证
        int fsum;           // 各位数字的和
        int first = 1;      // 控制打印
        char *p;
        int i;
    
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
            scanf("%s", nstr);
            p = nstr;
            fsum = 0;
            while (*p != '') {
                fsum += *p - '0';
                p++;
            }
            if (fno[fsum] == 0) {
                // 标记为1, 代表这个朋友号有
                fno[fsum] = 1;
                dfno++;
            }
        }
        printf("%d
    ", dfno);
        for (i = 0; i < LEN; i++) {
            if (fno[i] == 1) {
                if (first == 1) {
                    printf("%d", i);
                    first = 0;
                } else {
                    // 用这种方式来搞空格输出, 不要太方便
                    // 无需知道到底有多少个数满足条件
                    printf(" %d", i);
                }
            }
        }
        
        return 0;
    }
    
    
  • 相关阅读:
    2019年4月18日 查询功能 2
    bzoj3601
    bzoj2693
    bzoj2440
    bzoj3529
    bzoj2820
    BZOJ2813
    BZOJ4515
    AtCoder Grand Contest 001 题解
    BZOJ2757
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7898438.html
Copyright © 2011-2022 走看看