POJ 3077 Rounders

http://poj.org/problem?id=3077

念完题目也知道这题需要递归,当为要求的10的整数幂时返回,否则按四舍五入,再将幂加1,继续递归。

 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <stdlib.h>
 4 void trans(int *p,int base)
 5 {
 6     if((*p)<(int)pow(10,base))    return;
 7     if((*p)==pow(10,base))    return;
 8     if((*p)>pow(10,base)) {
 9         int tail=(*p)%(int)pow(10,base);
10         if(2*tail>=(int)pow(10,base)) {
11             *p=(*p)/(int)pow(10,base)*(int)pow(10,base)+(int)pow(10,base);
12         } else *p=(*p)/(int)pow(10,base)*(int)pow(10,base);
13         trans(p,base+1);
14     }
15 }
16 int main()
17 {
18     int n;
19     scanf("%d",&n);
20     while(n--) {
21         int number;
22         scanf("%d",&number);
23         trans(&number,1);
24         printf("%d\n",number);
25     }
26     return 0;
27 }

 

posted @ 2013-02-05 16:17  linyvxiang  阅读(155)  评论(0编辑  收藏  举报