关闭

I00038 自守数(Automorphic number)

标签: 自守数Automorphic number
657人阅读 评论(0) 收藏 举报
分类:

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

问题描述:输入n(n为int类型,计算输出n的所有自守数,每个数之间用空格隔开,输出在一行里。

问题分析:解决该问题有暴力法brute force method和数学的方法,暴力法对于初学编程的人来说相对比较简单,而用数学的方法来解决可以再计算时间上得到大幅改善。暴力法也成为枚举法或穷举法(Proof by exhaustion)。这里给出的程序是使用暴力法的解法。

程序说明:(略)。

AC的C语言程序如下:

/* I00038 自守数(Automorphic number) */

#include <stdio.h>

int main(void)
{
    unsigned int n, d1, d2, i, temp;
    unsigned long long square;

    scanf("%d", &n);

    d1 = d2 = 0;
    for(i=0; i<=n; i++) {
        square = (long long)i * i;
        temp = i;
        while(temp) {
            d1 = temp % 10;
            d2 = square % 10;
            if(d1 != d2)
                break;
            temp /= 10;
            square /= 10;
        }
        if(d1 == d2)
            printf("%d ", i);
    }
    printf("\n");

    return 0;
}

运行实例:

999999
0 1 5 6 25 76 376 625 9376 90625 109376 890625

1
0
查看评论

华为OJ——自守数

自守数 题目描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252 = 625,762 = 5776,93762 = 87909376。请求出n以内的自守数的个数 接口说明  /*  功能: 求出...
  • u010480899
  • u010480899
  • 2016-09-11 11:17
  • 258

上机题目(中级)-判断自守数(Java)

题目如下:代码如下:package huawei; public final class Demo { /* Description 判断是否是自守数 Prototype public static boolean isAutoMorphicNum(...
  • yayun0516
  • yayun0516
  • 2016-01-10 15:25
  • 1911

Java 自守数

import java.util.Scanner; public class zishoushu { public static void main(String[] args) { Scanner sc=new Scanner(System.in); long x=sc.nextInt...
  • Czhenya
  • Czhenya
  • 2017-08-27 09:10
  • 635

自守数算法----C语言实现

#include //自守数算法 //ep : 25 ^ 2 = 625 76 ^ 2 = 5776 9376 ^ 2 = 87909376 /*ep : * 376 被乘数 * *376 乘数 * ------ --------- * 2256...
  • morixinguan
  • morixinguan
  • 2016-10-12 11:22
  • 1631

求20000以内的自守数

25的平方为625  76的平方为5776 9376的平方为87908376 很明显我们不能在算出结果后截取相应的位数 同样的 我们也不需要每个乘数的积 只需要相应位数即可
  • du7793202641
  • du7793202641
  • 2016-11-12 21:39
  • 661

自守数 寻找出2千万以内的所有自守数。注意,2千万的平方已经超出了整数表达的最大范围,所以该程序使用了一个巧妙的方案。

/* 自守数 如果一个自然数的平方数的尾部仍然为该自然数本身,则称其为自守数。 例如: 5 x 5 = 25 76 x 76 = 5776 625 x 625 = 390625 下面代码的目的是寻找出2千万以内的所有自守数。 注意,2千万的平方已经超出了整数表达的最大范围,所以该程序使...
  • hanshileiai
  • hanshileiai
  • 2013-05-02 21:58
  • 5824

C语言---“自守数”问题

#include void main() { //巧妙的绕过了 计算平方的过程,因为太大的数字平方超出了范围。 long mul,number,k,a,b; printf("将输出100000以内的自守数:\n"); for(number=0; number&...
  • LSYtop
  • LSYtop
  • 2016-04-07 23:28
  • 797

华为OJ(自守数)

描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如:252 = 625,762 = 5776,93762 = 87909376。请求出n以内的自守数的个数 接口说明 /* 功能: 求出...
  • yiqiwangxi
  • yiqiwangxi
  • 2015-08-18 15:48
  • 1436

关于 自守数 的C语言算法

自守数 是指一个数的平方的尾数等于该数自身的自然数。 #include #include main() {     long int m,k,j,i,n,r,count,u,b,c,d,e;     for(i=0; i  ...
  • caozl218
  • caozl218
  • 2017-04-26 19:21
  • 353

自守数定义:一个自然数的平方的尾数等于该数本身。例如:25=625,76=5776,9376=87909376,则25、76、9376均是自守数。试建立一个类Self,求出指定范围内的自守

自守数定义:一个自然数的平方的尾数等于该数本身。例如:25=625,76=5776,9376=87909376,则25、76、9376均是自守数。试建立一个类Self,求出指定范围内的自守数,具体要求如下: (1)私有数据成员 int a[20]:存放求出的自守数。 int m , n , p...
  • zggzgw
  • zggzgw
  • 2017-04-20 20:39
  • 713
    个人资料
    • 访问:978076次
    • 积分:22150
    • 等级:
    • 排名:第394名
    • 原创:1151篇
    • 转载:102篇
    • 译文:0篇
    • 评论:426条
    文章分类
    博客专栏
    最新评论