Bailian2701 Bailian3864 与7无关的数进制(POJ NOI0105-39)

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian2701 Bailian3864 与7无关的数进制(POJ NOI0105-39)相关的知识,希望对你有一定的参考价值。

问题链接POJ NOI0105-39 与7无关的数

2701:与7无关的数
总时间限制: 1000ms 内存限制: 65536kB
描述
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和.

输入
输入为一行,正整数n(n < 100)
输出
输出一行,包含一个整数,即小于等于n的所有与7无关的正整数的平方和。
样例输入
21
样例输出
2336
来源
计算概论05

问题链接Bailian2701 Bailian3864 与7无关的数
问题简述:(略)
问题分析
  按Markdown格式重写了题解,旧版题解参见参考链接。
  进制有关的问题,需要判定整数的每一位数字是否为7。编写函数来判定一个整数的各位数字是否有7,可以使得主函数的逻辑更加简洁易懂。同时,需要判定整数能否被7整除?用模除(取余数)运算符“%”来计算除以7的余数,余数为0则能够被7整除。
程序说明:(略)
参考链接Bailian2701 Bailian3864 POJ NOI0105-39 与7无关的数【进制】
题记:进制是最为基本的概念,通常用模除取出最低位。

AC的C语言程序如下:

/* Bailian2701 Bailian3864 与7无关的数 */

#include <stdio.h>

#define BASE10 10

int check7(int n)
{
    while(n) {
        if(n % BASE10 == 7) return 1;
        n /= BASE10;
    }
    return 0;
}

int main(void)
{
    int n;
    scanf("%d", &n);

    int sum = 0, i;
    for (i = 1; i <= n; i++)
        if (i % 7 != 0 && check7(i) != 1)
            sum += i * i;

    printf("%d\\n", sum);

    return 0;
}

以上是关于Bailian2701 Bailian3864 与7无关的数进制(POJ NOI0105-39)的主要内容,如果未能解决你的问题,请参考以下文章

Bailian3725 集合问题优先队列

Bailian3725 集合问题优先队列

Bailian2796 Bailian3681 数字求和序列处理

动态规划:熟练度练习(POJ 1458最佳加法表达式bailian2755POJ3624bailian1088)

Bailian4134 查找最接近的元素二分查找

The Castle OpenJ_Bailian - 1164