poj 1001

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

这是一道高精度的运算,如果你之前有写过那种高精度的乘法的题目的话,做这个也还是比较简单的。、

思路:我是首先把小数点的位置确定下来,然后其他的数字不分一起运算,最后在添加小数点。

 

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <string.h>
 4 
 5 int nu[200],num[6];
 6 char inp[10];
 7 int n,loc;
 8 
 9 int nc()        //这一个就是高精度的乘法的算法用的。
10 {
11     int tmp[200]={0};
12     for(int i=0;i<200;i++)
13         for(int m=0;m<=5;m++)
14         {
15             tmp[m+i]+=nu[i]*num[m];
16         }
17     for(int i=0;i<200;i++)
18     {
19         if(tmp[i]>=100){
20             tmp[i+2]+=tmp[i]/100;
21             tmp[i+1]+=(tmp[i]-(tmp[i]/100)*100)/10;
22             tmp[i]=tmp[i]%10;
23         }
24         else if(tmp[i]>=10){
25             tmp[i+1]+=tmp[i]/10;
26             tmp[i]=tmp[i]%10;
27         }
28         nu[i]=tmp[i];
29     }
30     return 0;
31 }
32 
33 int main()
34 {
35  //   freopen("in.txt","r",stdin);
36     while(scanf("%s%d",inp,&n)!=EOF)
37     {
38         memset(nu,0,sizeof(nu));
39         int i,m;
40         for(i=0;inp[i]!='.';i++);           //找出小数点的位置。
41         loc=(5-i)*n;
42         for(i=5,m=0;i>=0;i--,m++)
43         {
44             if(inp[i]=='.') m--;
45             else {
46                 num[m]=inp[i]-'0';
47                 nu[m]=inp[i]-'0';
48             }
49         }
53         for(i=1;i<n;i++)
54             nc();
55         int mark=0,flog=0;
56         for(int i=0;i<=199;i++)       //用来除去后导0的。
57         {
58             if(i==loc){
59                 mark=i;
60                 flog=1;
61                 break;
62             }if(nu[i]!=0){
63                 mark=i;
64                 break;
65             }
66         }
67      //   printf("%d\n",mark);
68         for(i=199,m=199;i>=mark;i--,m--)
69         {
70             if(nu[i]!=0&&i==m) m--;
71             if(i!=m) printf("%d",nu[i]);
72             if(i==loc||(loc>i&&i==m))
73             {
74                 if(!flog) printf(".");
75                 m--;
76             }
77         }
78         printf("\n");
79     }
80     return 0;
81 }

 

posted @ 2016-07-25 14:30  一个_小菜鸟  阅读(207)  评论(0编辑  收藏  举报