你是否也在做OJ上的题呢?
最近一有时间就到杭州电子科技大学ACM网站去做上面的题,因为以前没有做过,所以就从最基本的题目开始做起,开始的时候很不习惯上面对输入与输出格式的限制,感觉很不爽。可是慢慢的,发现已经适应了要求的输入与输出的格式限制!三天的时间做了30几道题,真的是收获不小,长了很多的见识,对思维绝对是一种很好的锻炼。比如在这里举一个例子吧:这是题目:
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
Sample Input
2 3
12 6
6789 10000
0 0
Sample Output
8
984
1
初看这道题目,我想很多学生都会去计算A^B , 然后将结果对1000取余,这样就得到了最后三位数 。这是很多人的思路,但是细想一下,如果因为数太大,而无法进行计算,那怎办呢??因此解题的思路与想法很重要。我们只需要的是最后的三位数,而不去管其他位的数是什么,因此我们只需要最后的三位数就可以了!
这样我们的思路就清晰了 ,这是我写的程序:大家参考一下吧!
# include <stdio.h>
int main()
{
int a , b ;
int n , m , i ;
while(scanf("%d%d" , &a , &b) != EOF &&(a != 0 || b != 0))
{
n = a % 1000 ;
m = n ;
for(i = 1 ; i < b ; i++)
{
m = n * m ;
m = m % 1000 ;
}
printf("%d\n" , m) ;
}
return 0 ;
}
这就是我这几天通过做题而得到的体会!呵呵!同时建议大家多去做做题!