题目:http://acm.hdu.edu.cn/showproblem.php?pid=1063
//注意边界,看了其他大神的代码,郁闷。。。
1 #include2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 200 8 9 int main() 10 { 11 //freopen("in.txt","r",stdin); 12 char input[10]; 13 int result[N]; 14 int i,n,r[N],t[N]; 15 while(~scanf("%s%d",input,&n)) 16 { 17 memset(result,0,sizeof(result)); 18 memset(r,0,sizeof(r)); 19 memset(t,0,sizeof(t)); 20 t[0]=1; 21 int j=0; 22 for(i=5;i>=0;i--) 23 { 24 if(input[i]!='.') 25 r[j++]=input[i]-'0'; 26 } 27 for(i=0;i<=5;i++) 28 { 29 if(input[i]=='.') 30 break; 31 } 32 int flag=5-i;//记录小数点的位置 33 if(i==6) 34 flag=0; 35 if(n==0) 36 { 37 printf("1\n"); 38 continue; 39 } 40 int h=0; 41 for(i=0;i 9)//进位 58 { 59 result[i+1]+=result[i]/10; 60 result[i]%=10; 61 } 62 } 63 for(j=0;j =0;i--) 73 if(result[i]) 74 { 75 high=i; 76 break; 77 } 78 for(i=0;i =0;i--) 87 // printf("%d",result[i]); 88 // printf("\n"); 89 flag=flag*n-1; 90 // printf("%d\n",flag); 91 92 if(flag>=high) 93 { 94 printf("."); 95 for(i=flag;i>=low;i--) 96 printf("%d",result[i]); 97 } 98 else if(flag flag;i--)101 printf("%d",result[i]);102 }103 else104 {105 for(i=high;i>=low;i--)106 {107 if(i==flag)108 printf(".");109 printf("%d",result[i]);110 }111 }112 printf("\n");113 }114 return 0;115 }