Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343636
  • 博文数量: 88
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-21 14:50
文章分类

全部博文(88)

文章存档

2010年(88)

我的朋友

分类: C/C++

2010-10-25 18:40:46

昨天去笔百度了,系统部核心技术研发工程师/云计算系统研发工程师,第一道题目是这样的:

A^B的最后三位数表示的整数。1<=A,B<=10000

  当时一看是数字题目啊,估计得花不少时间,于是从第二题向后做,偏偏最后一题系统设计题目花了较长的时间(大概有半个小时吧),做完最后就10分钟了,感觉第一题来不及做了,于是交卷。。。

  中午吃完饭回到实验室,想了下那道题,突然一拍脑门,我每次相乘的时候只取后三位不就可以了嘛。。。比如1234^1000,1234*1234和234*234后三位的数字时一样的啊,相乘的时候只要考虑后三位就可以了。

int test(int A,int B)
{
int i,ret,tmp;

ret=tmp=A%1000;
for(i=1;i
{
ret *= (ret*tmp)%1000;
}
return ret;
}
就这样了,悲剧啊,估计考试的时候也有点紧张。。。
阅读(3114) | 评论(1) | 转发(0) |
0

上一篇:Linux内核进程切换

下一篇:Linux高端内存

给主人留下些什么吧!~~

chinaunix网友2010-10-25 22:52:48

楼主,还可以通过A^B=(A^2)^(B/2)的形式将复杂度从O (B)降到O(log B)