| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1277 人关注过本帖
标题:高次方尾数
只看楼主 加入收藏
jj369258
Rank: 4
等 级:业余侠客
帖 子:116
专家分:226
注 册:2010-12-2
结帖率:69.57%
收藏
已结贴  问题点数:10 回复次数:9 
高次方尾数
Description
求x的y次方的最后k位数。
Input
第一行包含一个整数n(1≤n≤100),表示测试用例的个数。每个测试用例的输入有一行,整数x,y,k。其中,0<x≤1000,0≤y≤1000; 0<k≤4;
Output
对每个测试用例输出一行。输出x的y次方的最后k位数(忽略前导0)。
Sample Input
2
2 10 3
10 1000 4
Sample Output
24
0

搜索更多相关主题的帖子: 测试 
2012-08-20 13:13
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
以后吧,问问题之前(或者之后)不妨寒暄几句,有助于和网友拉近关系,创造一个融洽的交流气氛。

直接扔个题目,这太生硬了,很容易被误解为伸手党。

还有一个礼节一定要注意,别人回答了你的问题后一定要回复致谢。这是鉴别伸手党的关键指标。

以后我要加强对伸手党的打击力度。一旦鉴定为伸手贴,见一贴,删一贴。

最后,满足你的愿望,送段代码给你。

程序代码:
#include<stdio.h>
int cal(int x, int y, int k)
{
    static e[] = {1, 10, 100, 1000, 10000};
    int r;
    if(y == 0) return 1;
    r = cal(x, y >> 1, k);
    r = r * r % e[k];
    if(y & 1) r = r * x % e[k];
    return r;
}
int main()
{
    int n, x, y, k;
    for(scanf("%d", &n); n--;)
    {
        scanf("%d%d%d", &x, &y, &k);
        printf("%d\n", cal(x, y, k));
    }
    return 0;
}

重剑无锋,大巧不工
2012-08-20 17:51
jj369258
Rank: 4
等 级:业余侠客
帖 子:116
专家分:226
注 册:2010-12-2
收藏
得分:0 
回复 2楼 beyondyf
好咯!谢谢啦!不过这道题目字数太大了,一般的数据类型不行啦!所以....
2012-08-20 23:59
jj369258
Rank: 4
等 级:业余侠客
帖 子:116
专家分:226
注 册:2010-12-2
收藏
得分:0 
不过这个代码还是看不懂,缺少注释啊!!
2012-08-21 00:01
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
我连题目都没整明白


我要成为嘿嘿的黑客,替天行道
2012-08-21 02:56
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 
难道我修斗了?


我要成为嘿嘿的黑客,替天行道
2012-08-21 02:58
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:0 
这样可以吗?
int a[4]={10,100,1000,10000};
int cal (int,int,int);
int cal (int x,int y,int z)
{
    int num=1;
    for(int i=0;i<y;i++)
    {    num*=x;
        num%=a[z-1];
    }
    return num;
}
2012-08-21 10:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 7楼 a745043791
也行。但主要是 y 一大,你的循环次数就会非常多。杨大哥那个是 O(log(y)) 的,你这个是 O(y)。
2012-08-21 10:44
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 3楼 jj369258
求尾数不需要计算大数。
(x*y) % k == x%k * y%k
所以只要每次算完都取余就行了。而这些过程都不超出 int 的表示范围,因为这里的 k 都不大。
2012-08-21 10:47
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:0 
回复 8楼 pangding
原来如此,学习了。
2012-08-21 14:12
快速回复:高次方尾数
数据加载中...
 
   



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

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