Bailian2701 Bailian3864 与7无关的数进制(POJ NOI0105-39)
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian2701 Bailian3864 与7无关的数进制(POJ NOI0105-39)相关的知识,希望对你有一定的参考价值。
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)的主要内容,如果未能解决你的问题,请参考以下文章
Bailian2796 Bailian3681 数字求和序列处理