| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:k尾相加
只看楼主 加入收藏
hdt123
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2012-11-8
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
k尾相加
从键盘输入一个自然数K(99999999>K>1),若存在自然数M和N(M>N),使得K的M次方和K的N次方均大于或等于1000,
且它们的未尾三位数相等,则称M和N是一对“K尾相等数”。请编程序,输出K尾相等数中M+N最小值。求大侠解救......
搜索更多相关主题的帖子: 自然数 
2012-12-24 00:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
也就是 k^(m-n) % 1000 = 0
其中 k^n >= 1000

但问题是一定有解吗,假如 k=2,则k的任意次方个位数都不可能为0
2012-12-24 08:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
我错了,“k^(m-n) % 1000 = 0”这个不对
比如 024*376 = 9024
2012-12-24 08:41
music1273
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2012-12-1
收藏
得分:7 
K^N>1000||K^N==1000&&K^M%1000==K^N%1000
2012-12-24 09:51
hdt123
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2012-11-8
收藏
得分:0 
回复 2楼 rjsp
题目中一也没有要求末尾一定是0!它对末尾是什么没有要求......
2012-12-24 10:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
回复 5楼 hdt123
用暴力法写了个,感觉有点烂,所以一开始没贴
程序代码:
#include <iostream>

unsigned ktail( unsigned k )
{
    unsigned tail[1000] = { 0 };

    int n = 1;
    int kn = k;
    for( ; kn<1000; ++n )
        kn *= k;
    kn %= 1000;
    tail[kn] = n;

    k %= 1000;
    int m = n + 1;
    int km = (kn*k)%1000;
    for( ; tail[km]==0; ++m )
    {
        tail[km] = m;
        km = (km*k)%1000;
    }

    std::cout << m << '+' << tail[km] << '=' << m+tail[km] << std::endl;
    return m+tail[km];
}

int main()
{
    ktail( 2 );

    return 0;
}

2012-12-24 10:44
hdt123
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2012-11-8
收藏
得分:0 
回复 6楼 rjsp
貌似得用C++才能编译.....
2012-12-24 10:52
快速回复:k尾相加
数据加载中...
 
   



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

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