1. 问题描述

什么是自守数
如果一个数字的平方的尾数刚好等于该数本身,那么这个数就是自守数。
例如:
5 * 5 = 2525 * 25 = 62576 * 76 = 5776

本文要求出0~1000以内的自守数。

2. 问题分析

首先分析平方后结果的构成,以376为例:
376 * 376 = 141376
① 376 * 6 = 2256
② 376 * 70 = 26320
③ 376 * 300 = 112800
141376 = ① + ② + ③

虽然数字很大,但是对自守数的判读有用的其实只有①②③中数字的最后三位之和的最后三位:256 + 320 + 800 = 1376

因此判定一个数num是否为自守数的步骤如下:
1)计算数字num是几位数字,把位数存储在n里;
2)被乘数num依次乘上num的各个位上的数字,求出前文中的①②③。
3)提取①②③的最后n位数值,并依次相加,得到res;
4)提取res的最后n位数值,与num相比,如果二者相等,那么num就是自守数。

3. 代码

#include <stdio.h>
int zishou(int num);   //判断自守数的子程序,返回长度为n的数的平方值的最后n位
int len(int num);   //计算任意一个int类型数的长度void main()
{int i, count=0;   //count表示这是0-1000的第几个自守数for(i=0;i<=1000;i++){if(zishou(i)==i)   //是自守数{printf("第%d个自守数: i=%d i*i=%d\n", ++count, i, i*i);}}
}//计算任意一个int类型数的长度
int len(int num)
{int len;for(len=0;num!=0;len++){num/=10;}return len;
}//判断自守数的子程序,返回长度为n的数的平方值的最后n位
int zishou(int num)
{int res=0;int cpy;int i, exp=1;int k=1;cpy = num;   //cpy是被乘数,num原始值之后会因为位数提取而被改变,所以要备份for(i=0;i<len(cpy);i++){exp *= 10;} //依次提取① ② ③(详见问题分析部分)中的最后n位的数值(判断对象有n位,例如对于判断对象376, n=3),求出他们的值,存储在res里while(num!=0){res += (cpy*(num%10)*k)%exp;num /= 10;k *= 10;}//提取res的最后n位return res%exp;
}

结果展示:

C语言趣味问题系列【2】自守数相关推荐

  1. 信息学奥赛C++语言: 趣味整数1(自守数)

    [题目描述] 晨输入两个正整数A 和 B(1<=A<=B<=40000),求A~B的所有自守数. 什么是自守数?比如52=5*5=25:252=25*25=625:762=5776: ...

  2. C语言趣味问题系列【1】 猜牌术

    1. 问题描述 猜牌术 一副牌中有13张黑桃,将这副牌整理好为一叠,牌面朝下. 第一次出牌,翻开最上面的那张牌,翻过来的正好是黑桃A,抽出黑桃A放在这叠牌的最底下成为最后一张. 第二次出牌,按顺序从上 ...

  3. I00038 自守数(Automorphic number)

    如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数(Automorphic number),参见百度百科_自守数,或参见维基百科的Automorphic number.自守数在OEIS中的 ...

  4. C语言趣味程序设计编程百例精解

    C/C++语言经典.实用.趣味程序设计编程百例精解(1)  1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组 ...

  5. c语言趣味教学题目及答案,C语言趣味程序设计-题目百例.doc

    C语言趣味程序设计-题目百例 Contest - 2011级C语言课程大作业Start Time: 2012-02-19 16:25:00 End Time: 2012-03-01 22:00:00C ...

  6. 【我解C语言面试题系列】013 以单词为单位的翻转字符串

    [我解C语言面试题系列]013 以单词为单位的翻转字符串 以单词为单位的翻转字符串 原题:Write a function string reverse string word By word (St ...

  7. 【我解C语言面试题系列】003 死循环格式问题小结?

    [我解C语言面试题系列]003 死循环格式问题小结? 死循环格式问题小结 下面是几个"著名"的死循环: (1)操作系统死循环: (2)WIN32程序死循环: (3)嵌入式系统软件死 ...

  8. 怎么调用获取被创建的预制体_Go 语言 Web 编程系列—— 获取用户请求数据(上)...

    0.GET/POST 请求数据 在 PHP 中,可以直接通过全局变量 $_GET 和 $_POST 快速获取 GET/POST 请求数据,GET 请求数据主要是 URL 查询字符串中包含的参数,以前面 ...

  9. C语言实现TEA系列加解密算法

    C语言实现TEA系列加解密算法 TEA加解密 XTEA加解密 XXTEA加解密 TEA加解密 #include <stdio.h> #include <stdint.h>//加 ...

最新文章

  1. R语言R原生及可视化包ggplot2绘制并排的箱图实战(Side-by-Side Boxplots)
  2. (Easy) Height Checker LeetCode
  3. JZOJ 100047. 【NOIP2017提高A组模拟7.14】基因变异
  4. D3js(五):tooltips
  5. 闲鱼把各种玩法做成了一个平台:哆啦A梦
  6. nginx汇总(z)
  7. 【2018.3.24】模拟赛之三-ssl2547 圆环【数论】
  8. 02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法
  9. 【计算机科学基础】数据运算
  10. 搜狗云输入法对外提供调用体验
  11. Mac原生浏览器Safari,那些你都不知道的使用技巧
  12. 2017cad光标大小怎么调_关于调整input里面的输入光标大小
  13. 网络“投毒”系列报告:全国多省软件升级劫持攻击事件数据分析
  14. python 图像手绘效果展示
  15. POJ 3088 Push Botton Lock
  16. Windows XP 上使用pyqt5 + pyinstaller
  17. 【C++】计算两个日期之间的差
  18. 考研最易出现的几种心理状态,让人崩溃!
  19. 《从零开始搭建游戏服务器》Linux开发环境配置
  20. shell正则表达式(cut、sort、uniq、tr、paste)小工具

热门文章

  1. 新版标准日本语高级_第18课
  2. apex 查询_APEX初步 [5] —— SOQL查询
  3. 对于电商尺码跟颜色组成的表格输入框,对输入框的操作
  4. 有道云笔记不同步_不怕误同步 有道云笔记历史记录教程
  5. ORC工具(使用阿里云统一文字识别接口实现)
  6. Tensorflow入门——自制数据集:将未经处理的图片制成npy格式的数据集
  7. 请将文件MP_verify_N8no8dpNO9n7wuBZ.txt上传至XXX指向的web服务器(或虚拟主机)的目录
  8. 邮件服务器怎么填,如何配置邮箱客户端?
  9. Python:fractions模块数值、浮点、小数转分数
  10. Java操作redis遇到的问题