| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4204 人关注过本帖
标题:一个关于自守数的问题 请各位帮个忙 急………………
只看楼主 加入收藏
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
收藏
已结贴  问题点数:10 回复次数:9 
一个关于自守数的问题 请各位帮个忙 急………………
    自守数是指一个数的平方的尾数等于该数自身的整数。
例如:25的平方=625   76的平方=5776   9376的平方=87909376
请求出200000以内的自守数
搜索更多相关主题的帖子: 625 
2011-10-25 19:55
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    long long a;
    int i, k, m;
    for(i = 1; i < 200000; i++)
    {
        a = i;
        a *= a;
        k = log10(i) + 1;
        for(m = 1; k; k--) m *= 10;
        a %= m;
        if(a == i) printf("%d\n", i);
    }
    return 0;
}
1
5
6
25
76
376
625
9376
90625
109376





重剑无锋,大巧不工
2011-10-25 20:22
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 2楼 beyondyf
小弟在此谢谢拉呵呵
2011-10-26 08:26
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 楼主 因为曾今年少
我在编译的时候报错 请问这是什么原因啊 怎么改最合适
warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-10-26 09:38
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这是报警提示,double向int转换时会损失精度,所以编译器在提醒你。我代码的本意就是删除小数部分。
不想看到这条提示可以进行显示转换。
k = (int)log10(i) + 1;

重剑无锋,大巧不工
2011-10-26 09:54
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 4楼 因为曾今年少
我做了这个强制转换  但是输出的结果却丢失了两个数 只有这些数被输出啦 是什么原因呢 还有就是做了 强制转换的话 又出现了 新的情况
error C2632: 'long' followed by 'long' is illegal

#include<stdio.h>
#include<math.h>
int main()
{
    long long a;//这里
    int i, k, m;
    for(i = 1; i < 200000; i++)
    {
        a = i;
        a *= a;
        k = (int)log10(i)+1;
        for(m = 1; k; k--) m *= 10;
        a %=m;
        if(a == i) printf("%d\n", i);
    }
    return 0;
}


请问是什么问题导致的
修改为这样的话
#include<stdio.h>
#include<math.h>
int main()
{
    long a;//这里
    int i, k, m;
    for(i = 1; i < 200000; i++)
    {
        a = i;
        a *= a;
        k = (int)log10(i)+1;
        for(m = 1; k; k--) m *= 10;
        a %=m;
        if(a == i) printf("%d\n", i);
    }
    return 0;
}
输出:
1
5
6
25
76
376
625
9376


是不是精度导致的  还是那里有问题
2011-10-26 10:16
者好爱程编
Rank: 2
等 级:论坛游民
帖 子:68
专家分:46
注 册:2011-8-22
收藏
得分:5 
自守数是指一个数的平方的尾数等于该数自身的整数。

学习了
2011-10-26 10:20
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
如果long够用我就不会用long long了。在32位编译器里long和int是一样的。long long表示64位整型,在C99标准中支持。
显然你的编译器不支持这个关键字。如果你用的是VC6,请使用_int64。如果是TC,建议你换个编译器。80年代的东西,该淘汰就淘汰了吧。

重剑无锋,大巧不工
2011-10-26 10:29
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 7楼 者好爱程编
恩好的  学习啦 谢谢啦 呵呵  主要是这个软件用起来对于新手来说比较方便
2011-10-26 10:32
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
回复 8楼 beyondyf
谢谢啦 呵呵  以后还请多多指教
2011-10-26 10:41
快速回复:一个关于自守数的问题 请各位帮个忙 急………………
数据加载中...
 
   



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

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