| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1268 人关注过本帖
标题:求自守数的个数
只看楼主 加入收藏
香菱
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2014-4-4
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:20 
求自守数的个数
自守数” 是平方尾数等于该数自身的自然数。例如:
25*25=625      76*76=5776     9376*9376=87909376
输入:
n(自守数的位数)(n <= 15)
输出:
n 位的自守数
比如输入 1  输出 1 5 6
2 25 76,求各位大神指点,知道这些数之间有一些规律,但不知道怎么编写程序
忽略题目

[ 本帖最后由 香菱 于 2014-4-20 20:14 编辑 ]
搜索更多相关主题的帖子: 自然数 
2014-04-20 20:13
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
收藏
得分:2 
我前几天好像解决过这个问题,你找找前面的帖子。
2014-04-20 21:48
香菱
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2014-4-4
收藏
得分:0 
我查了,跟他们的不一样
2014-04-20 22:34
香菱
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2014-4-4
收藏
得分:0 
回复 2 楼 Andrew_Lee
那个没找着,你能给我讲讲吗?
2014-04-20 22:36
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:2 
大同小异,修改一下就可以。另外,n <= 15 15位已经超出long的范围了。恐怕需要类似于大数乘法的算法了。

[ 本帖最后由 ying8501 于 2014-4-21 07:53 编辑 ]
2014-04-20 22:39
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
程序代码:
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#define LEN  15

void print(int a[], int n)
{
    for (n -= 1; n >= 0; n -= 1)
        printf("%d", a[n]);
    puts("");
}

int GetSum(int a[], int n)
{
    int sum = 0;
    for (int i = 0; i <= n; i += 1)
    {
        sum += a[i] * a[n - i];
    }
    return sum;
}

void fun(int a[], int ip, int flag, int n)
{
    if (ip == n)
    {
        if (a[n-1])  print(a, n);
        return;
    }
    for (a[ip] = 0; a[ip] < 10; a[ip] += 1)
    {
        int sum = GetSum(a, ip) + flag;
        if (sum % 10 != a[ip])  continue;
        fun(a, ip + 1, sum / 10, n);
    }
}

int main( void )
{
    int sa[LEN] = { 0 };

    for (int n = 1; n <= LEN; n += 1)
    {
        fun(sa, 0, 0, n);
    }

    return 0;
}


[fly]存在即是合理[/fly]
2014-04-21 00:35
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:0 
学习了。
2014-04-21 08:33
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
收藏
得分:0 
回复 4 楼 香菱
https://bbs.bccn.net/viewthread.php?tid=429807&page=1#pid2401194
这个求的是1000以内的,我把IF条件变了下,就可以按你的要求输出1W以下的数据了。超过1万的话,就无法实现了。
程序代码:
#include <stdio.h>
#include <math.h>

void main()
{
    int i,j;
    int d;

    scanf("%d",&d);
    for(i=(int)pow(10,d-1);i<(int)pow(10,d);i++)
    {
        for(j=10;j<(int)pow(10,d);j=j*10)
        {
            if(i/j == 0)
                break;
        }

        if(((i*i)%j) == i)
            printf("%d ",i);
    }
    printf("\n");
}

2014-04-21 09:18
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
以下是引用Andrew_Lee在2014-4-21 09:18:25的发言:

https://bbs.bccn.net/viewthread.php?tid=429807&page=1#pid2401194
这个求的是1000以内的,我把IF条件变了下,就可以按你的要求输出1W以下的数据了。超过1万的话,就无法实现了。
#include <stdio.h>
#include <math.h>

void main()
{
    int i,j;
    int d;

    scanf("%d",&d);
    for(i=(int)pow(10,d-1);i<(int)pow(10,d);i++)
    {
        for(j=10;j<(int)pow(10,d);j=j*10)
        {
            if(i/j == 0)
                break;
        }

        if(((i*i)%j) == i)
            printf("%d ",i);
    }
    printf("\n");
}


拜托   更换一下头像呗  太恶心了

DO IT YOURSELF !
2014-04-21 09:27
Andrew_Lee
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:185
专家分:626
注 册:2014-3-21
收藏
得分:0 
回复 9 楼 wp231957
说的我好伤心。。。。。。
2014-04-21 11:48
快速回复:求自守数的个数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029037 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved