zoukankan      html  css  js  c++  java
  • HDU2097 Sky数

    问题链接HDU2097 Sky数入门练习题,用C语言编写程序。

    问题简述参见上述链接。

    问题分析进制转换问题,通常用除运算(/)和取余数运算(%)来实现。

    程序说明程序中,使用数组scale[]是为了提高程序的通用性。改变该数组的内容,就可以改变程序的功能,而不需要修改程序。

    AC的C语言程序如下:

    /* HDU2097 Sky数 */
    
    #include <stdio.h>
    
    // 数字之和:将10进制的val转为base进制,并对各位求和
    int digitsum(int val, int base)
    {
        int sum = 0;
        while(val) {
            sum += val % base;
            val /= base;
        }
    
        return sum;
    }
    
    int main(void)
    {
        int n, sum, skyflag, i;
        int scale[] = {16, 12};
    
        while(scanf("%d", &n) != EOF) {
            // 判定结束条件;
            if(n == 0)
                break;
    
            // 计算各位之和
            sum = digitsum(n, 10);
    
            // Sky数判定
            skyflag = 1;
            int len = sizeof(scale) / sizeof(int);
            for(i=0; i<len; i++)
                if(digitsum(n, scale[i]) != sum) {
                    skyflag = 0;
                    break;
                }
    
            // 输出结果
            if(skyflag)
                printf("%d is a Sky Number.
    ", n);
            else
                printf("%d is not a Sky Number.
    ", n);
        }
    
        return 0;
    }


  • 相关阅读:
    表格维护:弹出
    表格联动
    表单查询
    浅谈分治 —— 洛谷P1228 地毯填补问题 题解
    The Captain 题解
    网课集训记
    2020-1-20寒假集训记
    博客使用声明
    JZOJ P5829 string 线段树
    线段树--CF438D The Child and Sequence
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564572.html
Copyright © 2011-2022 走看看