| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3194 人关注过本帖, 2 人收藏
标题:输出712的n次方结果后三位为696的个数,N的范围比较大。。。就2~24469吧,求 ...
只看楼主 加入收藏
michaelc
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-4-5
结帖率:100%
收藏(2)
已结贴  问题点数:20 回复次数:28 
输出712的n次方结果后三位为696的个数,N的范围比较大。。。就2~24469吧,求大神给编码
自己写过,但是貌似会溢出,所以不能实现,求大神。
搜索更多相关主题的帖子: 696 
2012-11-14 22:15
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
要的只是满足要求的数个数而已,又不是要满足要求的数。何必非要连那个数也算出来?

进一步提示:每次只保留结果的后三位就够了。
理论依据:数论(初等)。

重剑无锋,大巧不工
2012-11-14 22:26
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
以下是引用beyondyf在2012-11-14 22:26:46的发言:

要的只是满足要求的数个数而已,又不是要满足要求的数。何必非要连那个数也算出来?

进一步提示:每次只保留结果的后三位就够了。
理论依据:数论(初等)。


学习了。


[fly]存在即是合理[/fly]
2012-11-14 22:55
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:10 
程序代码:
#include<stdio.h>
int main(){
    int sum=712,count=0;
    for(int i=2;i<=24469;++i)
    {
        sum=sum*712%1000;
        if(sum==696)
            count++;
    }
    printf("%d",count);
    return 0;
}

WE GO
2012-11-14 23:05
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
再进一步。2到两万多这个范围有点小,要是改成2到20亿呢?要求1秒钟内得出结果。

重剑无锋,大巧不工
2012-11-15 09:02
michaelc
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-4-5
收藏
得分:0 
回复 2楼 beyondyf
感谢指点,新手还需继续努力。
2012-11-15 14:05
michaelc
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2012-4-5
收藏
得分:0 
回复 4楼 cyhdahua
嗯嗯,这么写对的,不过想二楼说的一秒出结果是不是有点难啊?
2012-11-15 14:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
如果引用4楼的代码  把数据加长到20亿,结果应该是30秒以内
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
#include<stdio.h>
#include<time.h>
int main()
{
    long now=0;
    now=clock();
    int sum=712,count=0;
    for(int i=2;i<=2000000000;i++)
    {
        sum=sum*712%1000;
        if(sum==696)
            count++;
    }
    printf("共发现有%d个数字符合要求\n",count);
    printf("本程序所用时间为%10.4lf秒\n",(double)(clock()-now)/CLOCKS_PER_SEC);
    return 0;
}

DO IT YOURSELF !
2012-11-15 15:23
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,那要是把范围再扩大,到1亿亿呢?

重剑无锋,大巧不工
2012-11-15 16:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
1秒其实足够长了,只要算法得当,一般的电脑应该连1毫秒也用不了

重剑无锋,大巧不工
2012-11-15 16:15
快速回复:输出712的n次方结果后三位为696的个数,N的范围比较大。。。就2~24469 ...
数据加载中...
 
   



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

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