杭电分类:大数

1002:

1002
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 #define P(x) \
 6 cout << #x " " << x << ":" << endl;
 7 
 8 #define PE(a, b, c, sum) \
 9 cout << a << " + " <<  b << " = " << (c ? "1" : "") << sum << endl;
10 int main()
11 {
12     int T;
13     cin >> T;
14     int Case = 1;
15     while(T--)
16     {
17         P(Case);
18         ++Case;
19         string a, b, sum;
20         cin >> a >> b;
21         //cout << a << " + " <<  b << " = " ;
22         int l_a = a.size()-1, l_b = b.size()-1, c = 0;
23         sum = (l_a > l_b ? a : b);
24         int i, j;
25         for(i = l_a, j = l_b; i >= 0 && j >= 0; --i, --j)
26         {
27             int s  = a[i] - '0' + b[j] - '0' + c;
28             sum[i>j?i:j] = s % 10 + 48;
29             c = s / 10;
30         }
31         while(i >= 0)
32         {
33             int s = sum[i] - '0' + c;
34             sum[i] = s % 10 + 48;
35             c = s / 10;
36             i--;
37         }
38         while(j >= 0)
39         {
40             int s = sum[j] - '0' + c;
41             sum[j] = s % 10 + 48;
42             c = s / 10;
43             j--;
44         }
45         // cout << (c ? "1" : "") << sum << endl;
46         PE(a, b, c, sum);
47         if(T)
48             cout << endl;
49     }
50     return 0;
51 }
1042
 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 
 5 const int maxn = 40000;
 6 int f[maxn];
 7 int main()
 8 {
 9     int n;
10     while(cin >> n)
11     {
12         memset(f, 0, sizeof(f));
13         f[0] = 1;
14         for(int i = 2; i <= n; ++i)
15         {
16 //乘以i
17             int c = 0;
18             for(int j = 0; j < maxn; ++j)
19             {
20                 int s = f[j] * i + c;
21                 f[j] = s % 10;
22                 c = s / 10;
23             }
24         }
25         int j;
26         for(j = maxn - 1; j >= 0 && !f[j]; --j);
27         for(int i = j; i >= 0; --i)
28             cout << f[i];
29         cout << endl;
30     }
31     return 0;
32 }

 1073:

View Code
  1 #include<iostream>
  2 #include<string>
  3 #include<sstream>
  4 using namespace std;
  5 
  6 const int maxn = 1000;
  7 
  8 void reverse(string &a)
  9 {
 10     string c = "";
 11     int len = a.size();
 12     for(int i = 0; i < len; ++i)
 13         c += a[len-i-1];
 14     if(c == "")
 15         c = "0";
 16     a = c;
 17 }
 18 
 19 //**********************去首部0**************************
 20 void beg_0(string &a)
 21 {
 22     int beg = 0;
 23     for(; beg < a.size() && a[beg] == '0'; ++beg);
 24     if(beg < a.size())
 25     {
 26         string t(a.begin()+beg,a.end());
 27         a = t;
 28     }
 29     else
 30         a = "0";
 31 }
 32 //**********************去末尾0**************************
 33 void end_0(string& a)
 34 {
 35     int end = a.size()-1;
 36     for(; end >=0 && a[end] == '0'; --end);
 37     if(end >= 0)
 38     {
 39         string t(a.begin(), a.begin()+end+1);
 40         a = t;
 41     }
 42     else
 43         a = "0";
 44 }
 45 //******************小数部分相加*****************
 46 string de_add(string a, string b, int& d)
 47 {
 48     //传递小数部分向整数的的进位d
 49     int x = a.size()-b.size();
 50     if(x < 0)
 51         x = -x;
 52     string c(x, '0');
 53     if(a.size() < b.size())
 54         a += c;
 55     else if(b.size() < a.size())
 56         b += c;
 57     reverse(a);
 58     reverse(b);
 59     if(a.size() < b.size())
 60     {
 61         string c(b);
 62         b = a;
 63         a = c;
 64     }
 65     int i = 0;
 66     d = 0;
 67     while(i < b.size())
 68     {
 69         a[i] = a[i] - '0' + b[i] - '0' + d;
 70         d = a[i] / 10;
 71         a[i] = a[i] % 10;
 72         a[i] += '0';
 73         ++i;
 74     }
 75     while(i < a.size())
 76     {
 77         a[i] =a[i] - '0' + d;
 78         d = a[i] / 10;
 79         a[i] %= 10;
 80         a[i] += '0';
 81         ++i;
 82     }
 83     beg_0(a);
 84     reverse(a);
 85     return a;
 86 }
 87 //******************整数部分相加*****************
 88 string in_add(string a, string b, int x)
 89 {
 90     reverse(a);
 91     reverse(b);
 92     if(a.size() < b.size())
 93     {
 94         string c(b);
 95         b = a;
 96         a = c;
 97     }
 98     int i = 0, d = x;
 99     while(i < b.size())
100     {
101         a[i] = a[i] - '0' + b[i] - '0' + d;
102         d = a[i] / 10;
103         a[i] = a[i] % 10;
104         a[i] += '0';
105         ++i;
106     }
107     while(i < a.size())
108     {
109         a[i] =a[i] - '0' + d;
110         d = a[i] / 10;
111         a[i] %= 10;
112         a[i] += '0';
113         ++i;
114     }
115     if(d)
116         a += '1';
117     end_0(a);
118     reverse(a);
119     return a;
120 }
121 //*******************定位小数点**********************
122 int locate(string a)
123 {
124     int i;
125     for(i = 0; i < a.size() && a[i] != '.'; ++i);
126     return i;
127 }
128 int main()
129 {
130     string a, b;
131     while(cin >> a >> b)
132     {
133         //****************************分离小数部分和整数部分*****************************
134         string a1(a.begin(), a.begin()+locate(a)), a2 = "0";
135         if(locate(a) != a.size())
136         {
137             string t(a.begin()+locate(a)+1, a.end());
138             a2 = t;
139 
140         }
141         string b1(b.begin(), b.begin()+locate(b)), b2 = "0";
142         if(locate(b) != b.size())
143         {
144             string t(b.begin()+locate(b)+1, b.end());
145             b2 = t;
146         }
147         //*****************************相加************************
148         int d = 0;
149         string p = "", p_in = "", p_de = "";
150         p_de = de_add(a2, b2, d);
151         p_in = in_add(a1, b1, d);
152         /********************************
153         cout << p_in << endl;
154         cout << p_de << endl;
155         ************************************/
156         p = p_in;
157         if(p_de != "0")
158             p += "." + p_de;
159         cout << p << endl;
160     }
161     return 0;
162 }

 1316:万恶的读题啊,一下连续出错了三次,最后才发现是题目上的f2 = 2,不在是斐波那契数列了!!!

1316
  1 #include<iostream>
  2 #include<string>
  3 #include<vector>
  4 #include<cassert>
  5 using namespace std;
  6 
  7 const int maxn = 500 + 5;
  8 void reverse(string& a)
  9 {
 10     string t = "";
 11     for(int i = a.size()-1; i >= 0; --i)
 12         t += a[i];
 13     a = t;
 14 }
 15 //*******************重载加法操作符****************************
 16 string operator+(string a, string b)
 17 {
 18     reverse(a);
 19     reverse(b);
 20     int i = 0, c = 0;
 21     if(a.size() < b.size())
 22     {
 23         string t(b);
 24         b = a;
 25         a = t;
 26     }
 27     while(i < b.size())
 28     {
 29         a[i] = a[i] - '0' + b[i] - '0' + c;
 30         c = a[i] / 10;
 31         a[i] %= 10;
 32         a[i] += '0';
 33         ++i;
 34     }
 35     while(i < a.size())
 36     {
 37         a[i] = a[i] - '0' + c;
 38         c = a[i] / 10;
 39         a[i] %= 10;
 40         a[i] += '0';
 41         ++i;
 42     }
 43     if(c)
 44         a += '1';
 45     reverse(a);
 46     return a;
 47 }
 48 
 49 bool operator<(string a, string b)
 50 {
 51     if(a.size() != b.size())
 52         return a.size() < b.size();
 53     for(int i = 0; i < a.size(); ++i)
 54         if(a[i] != b[i])
 55             return a[i] < b[i];
 56     return false;
 57 }
 58 bool operator >(string a, string b)
 59 {
 60     return b < a;
 61 }
 62 bool operator <=(string a, string b)
 63 {
 64     return !(a > b);
 65 }
 66 bool operator >=(string a, string b)
 67 {
 68     return !(a < b);
 69 }
 70 
 71 int main()
 72 {
 73     string str;
 74     vector<string> svec;
 75     string a0 = "0", a1 = "1", a2 = "2";
 76     svec.push_back(a0);
 77     svec.push_back(a1);
 78     svec.push_back(a2);
 79     for(int i = 3; i < maxn; ++i)
 80     {
 81         str = "0";
 82         str = svec[i-1] + svec[i-2];
 83         svec.push_back(str);
 84     }
 85     /*********************************尝试容器上限范围********************************************
 86     int n;
 87     while(cin >> n)
 88     {
 89         cout << svec[n] << endl;
 90     }
 91     *************************************************************************************************/
 92     string a, b;
 93     while(cin >> a >> b, a != "0" || b != "0")
 94     {
 95         assert(a[0] != '-');
 96         assert(b[0] != '-');
 97         assert(a <= b);
 98         /*********************************************************************
 99         int c = 0, d;
100         string count = "0";
101         for(int i = 1; i < svec.size(); ++i)
102             if(svec[i] >= a && svec[i] <= b)
103             {
104                 reverse(count);
105                 count[0] = count[0] - '0' + 1;
106                 c = count[0] / 10;
107                 count[0] %= 10;
108                 count[0] += '0';
109                 //***************向前进位**********************
110                 for(int i = 1; i < count.size() && c; ++i)
111                 {
112                     count[i] = count[i] - '0' + c;
113                     c = count[i] / 10;
114                     count[i] %= 10;
115                     count[i] += '0';
116                 }
117                 //*********************最终进位********************
118                 if(c)
119                     count += '1';
120                 reverse(count);
121             }
122         ********************************************************************/
123         int count = 0;
124         for(int i = 1; i < svec.size(); ++i)
125             if(svec[i] >= a && svec[i] <= b)
126                 ++count;
127         cout << count << endl;
128     }
129     //************************************************************************/
130     return 0;
131 }
1715
 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 using namespace std;
 5 
 6 const int maxn = 1000 + 5;
 7 
 8 void reverse(string& a)
 9 {
10     string t = "";
11     for(int i = a.size()-1; i >= 0; --i)
12         t += a[i];
13     a = t;
14 }
15 string operator+(string a, string b)
16 {
17     reverse(a);
18     reverse(b);
19     int i = 0, c = 0;
20     if(a.size() < b.size())
21     {
22         string t(b);
23         b = a;
24         a = t;
25     }
26     while(i < b.size())
27     {
28         a[i] = a[i] - '0' + b[i] - '0' + c;
29         c = a[i] / 10;
30         a[i] %= 10;
31         a[i] += '0';
32         ++i;
33     }
34     while(i < a.size())
35     {
36         a[i] = a[i] - '0' + c;
37         c = a[i] / 10;
38         a[i] %= 10;
39         a[i] += '0';
40         ++i;
41     }
42     if(c)
43         a += '1';
44     reverse(a);
45     return a;
46 }
47 int main()
48 {
49     string str;
50     vector<string> svec;
51     string a0 = "0", a1 = "1", a2 = "1";
52     svec.push_back(a0);
53     svec.push_back(a1);
54     svec.push_back(a2);
55     for(int i = 3; i < maxn; ++i)
56     {
57         str = "0";
58         str = svec[i-1] + svec[i-2];
59         svec.push_back(str);
60     }
61     int n, t;
62     cin >> t;
63     while(t--, cin >> n)
64     {
65         cout <<svec[n] << endl;
66     }
67     return 0;
68 }
1753
  1 #include<iostream>
  2 #include<string>
  3 #include<sstream>
  4 using namespace std;
  5 
  6 const int maxn = 1000;
  7 
  8 void reverse(string &a)
  9 {
 10     string c = "";
 11     int len = a.size();
 12     for(int i = 0; i < len; ++i)
 13         c += a[len-i-1];
 14     if(c == "")
 15         c = "0";
 16     a = c;
 17 }
 18 
 19 //**********************去首部0**************************
 20 void beg_0(string &a)
 21 {
 22     int beg = 0;
 23     for(; beg < a.size() && a[beg] == '0'; ++beg);
 24     if(beg < a.size())
 25     {
 26         string t(a.begin()+beg,a.end());
 27         a = t;
 28     }
 29     else
 30         a = "0";
 31 }
 32 //**********************去末尾0**************************
 33 void end_0(string& a)
 34 {
 35     int end = a.size()-1;
 36     for(; end >=0 && a[end] == '0'; --end);
 37     if(end >= 0)
 38     {
 39         string t(a.begin(), a.begin()+end+1);
 40         a = t;
 41     }
 42     else
 43         a = "0";
 44 }
 45 //******************小数部分相加*****************
 46 string de_add(string a, string b, int& d)
 47 {
 48     //传递小数部分向整数的的进位d
 49     int x = a.size()-b.size();
 50     if(x < 0)
 51         x = -x;
 52     string c(x, '0');
 53     if(a.size() < b.size())
 54         a += c;
 55     else if(b.size() < a.size())
 56         b += c;
 57     reverse(a);
 58     reverse(b);
 59     if(a.size() < b.size())
 60     {
 61         string c(b);
 62         b = a;
 63         a = c;
 64     }
 65     int i = 0;
 66     d = 0;
 67     while(i < b.size())
 68     {
 69         a[i] = a[i] - '0' + b[i] - '0' + d;
 70         d = a[i] / 10;
 71         a[i] = a[i] % 10;
 72         a[i] += '0';
 73         ++i;
 74     }
 75     while(i < a.size())
 76     {
 77         a[i] =a[i] - '0' + d;
 78         d = a[i] / 10;
 79         a[i] %= 10;
 80         a[i] += '0';
 81         ++i;
 82     }
 83     beg_0(a);
 84     reverse(a);
 85     return a;
 86 }
 87 //******************整数部分相加*****************
 88 string in_add(string a, string b, int x)
 89 {
 90     reverse(a);
 91     reverse(b);
 92     if(a.size() < b.size())
 93     {
 94         string c(b);
 95         b = a;
 96         a = c;
 97     }
 98     int i = 0, d = x;
 99     while(i < b.size())
100     {
101         a[i] = a[i] - '0' + b[i] - '0' + d;
102         d = a[i] / 10;
103         a[i] = a[i] % 10;
104         a[i] += '0';
105         ++i;
106     }
107     while(i < a.size())
108     {
109         a[i] =a[i] - '0' + d;
110         d = a[i] / 10;
111         a[i] %= 10;
112         a[i] += '0';
113         ++i;
114     }
115     if(d)
116         a += '1';
117     end_0(a);
118     reverse(a);
119     return a;
120 }
121 //*******************定位小数点**********************
122 int locate(string a)
123 {
124     int i;
125     for(i = 0; i < a.size() && a[i] != '.'; ++i);
126     return i;
127 }
128 int main()
129 {
130     string a, b;
131     while(cin >> a >> b)
132     {
133         //****************************分离小数部分和整数部分*****************************
134         string a1(a.begin(), a.begin()+locate(a)), a2 = "0";
135         if(locate(a) != a.size())
136         {
137             string t(a.begin()+locate(a)+1, a.end());
138             a2 = t;
139 
140         }
141         string b1(b.begin(), b.begin()+locate(b)), b2 = "0";
142         if(locate(b) != b.size())
143         {
144             string t(b.begin()+locate(b)+1, b.end());
145             b2 = t;
146         }
147         //*****************************相加************************
148         int d = 0;
149         string p = "", p_in = "", p_de = "";
150         p_de = de_add(a2, b2, d);
151         p_in = in_add(a1, b1, d);
152         /********************************
153         cout << p_in << endl;
154         cout << p_de << endl;
155         ************************************/
156         p = p_in;
157         if(p_de != "0")
158             p += "." + p_de;
159         cout << p << endl;
160     }
161     return 0;
162 }
163 
164 /*
165 
166 
167 0000.326 00.2365
168 3 6
169 3.000 5.00000
170 8 9.4000
171 009 563.000
172 */

1047:(应该是无限循环了)

超时
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 //读入到文件中,再从文件中每次读取一行,相加
 5 string reverse(const string& a)
 6 {
 7     string t = "";
 8     for(int i = a.size()-1; i >= 0; --i)
 9         t += a[i];
10     return t;
11 }
12 
13 string operator + (string a, string b)
14 {
15     a = reverse(a);
16     b = reverse(b);
17     int i = 0;
18     if(a.size() < b.size())
19     {
20         string t(a);
21         a = b;
22         b = t;
23     }
24     int c = 0;
25     string result(a);
26     for(; i < b.size(); ++i)
27     {
28         result[i] = a[i] - '0' + b[i] - '0' + c;
29         c = result[i] / 10;
30         result[i] %= 10;
31         result[i] += '0';
32     }
33     while(c && i < a.size())
34     {
35         result[i] = result[i] - '0' + c;
36         c = result[i] / 10;
37         result[i] %= 10;
38         result[i] += '0';
39         ++i;
40     }
41     if(c)
42         result += '1';
43     result = reverse(result);
44     return result;
45 }
46 int main()
47 {
48     string str;
49     int n;
50     /************************************
51     while(getline(cin, str) && str != "")
52     {
53         cout << ": " << str << endl;
54     }
55     ************************************/
56     while(cin >> n, n != 0)
57     {
58         cin.ignore('\n');//忽略以后的空行
59         for(int i = 0; i < n; ++i)
60         {
61             string result = "";
62             while(getline(cin, str) && str != "" && str != "0")
63             {
64                 //遇到单独一个空行,输出结果
65                 result =result + str;
66             }
67             cout << result << endl;
68             cout << endl;
69         }
70     }
71     return 0;
72 }
1047~正解
 1 /***************************************
 2 万恶的前导零,本来以为整数就不会出现这种情
 3 况的,还是不够谨慎啊
 4 ***************************************/
 5 #include<iostream>
 6 #include<string>
 7 using namespace std;
 8 
 9 string del_zero(string result)
10 {
11     int i = 0;
12     for(; i < result.size() && result[i] == '0'; ++i);
13     if(i == result.size())
14         result = "0";
15     else
16     {
17         string t(result.begin()+i, result.end());
18         result = t;
19     }
20     return result;
21 }
22 string reverse(const string& a)
23 {
24     string t = "";
25     for(int i = a.size()-1; i >= 0; --i)
26         t += a[i];
27     return t;
28 }
29 
30 string add(string a, string b)
31 {
32     a = reverse(a);
33     b = reverse(b);
34     int i = 0;
35     if(a.size() < b.size())
36     {
37         string t(a);
38         a = b;
39         b = t;
40     }
41     int c = 0;
42     string result(a);
43     for(; i < b.size(); ++i)
44     {
45         result[i] = a[i] - '0' + b[i] - '0' + c;
46         c = result[i] / 10;
47         result[i] %= 10;
48         result[i] += '0';
49     }
50     while(c && i < a.size())
51     {
52         result[i] = result[i] - '0' + c;
53         c = result[i] / 10;
54         result[i] %= 10;
55         result[i] += '0';
56         ++i;
57     }
58     if(c)
59         result += '1';
60     result = reverse(result);
61     return result;
62 }
63 int main()
64 {
65     string str;
66     int n;
67     cin >> n;
68     for(int i = 0; i < n; ++i)
69     {
70         string result = "";
71         while(getline(cin, str) && str != "0")
72         {
73             //遇到单独一个空行,输出结果
74             str = del_zero(str);
75             result = add(str, result);
76         }
77         cout << del_zero(result);
78         cout << ((i == n-1)?"\n":"\n\n");
79     }
80     return 0;
81 }
  1 #include<iostream>
  2 #include<vector>
  3 #include<string>
  4 using namespace std;
  5 
  6 //***************转换成整数**************************
  7 inline bool is_decimals(const string& a)
  8 {
  9     int i = a.size()-1;
 10     for(; i >= 0 && a[i] != '.'; --i);
 11     if(i != -1)
 12         return true;
 13     return false;
 14 }
 15 inline string del_f_zero(string& a)
 16 {
 17     int i = 0;
 18     for(; a[i] == '0' && i != a.size(); ++i);
 19     if(i == a.size())
 20         a = "0";
 21     else
 22     {
 23         string b(a.begin()+i, a.end());
 24         a = b;
 25     }
 26     return a;
 27 }
 28 inline string del_l_zero(string& a)
 29 {
 30     //去除末尾零
 31     int i = a.size()-1;
 32     for(; i >= 0 && a[i] == '0' && a[i] != '.'; --i);
 33     if(i != -1)
 34     {
 35         string t(a.begin(), a.begin()+i+1);
 36         a = t;
 37     }
 38     else
 39         a = "0";
 40     return a;
 41 }
 42 inline string del_point(string& a)
 43 {
 44     //000.00
 45     if(a == ".")
 46         return "0";
 47     if(a[0] == '.')
 48     {
 49         //0.300
 50         string t(a.begin()+1, a.end());
 51         return t;
 52     }
 53     if(a[a.size()-1] == '.')
 54     {
 55         //3.000
 56         string t(a.begin(), a.end()-1);
 57         return t;
 58     }
 59     int i = 0;
 60     for(; i < a.size() && a[i] != '.'; ++i);
 61     if(i != a.size())
 62     {
 63         string a_int(a.begin(), a.begin() + i);
 64         string a_float(a.begin()+i+1, a.end());
 65         a = a_int + a_float;
 66     }
 67     return a;
 68 }
 69 inline int point(string& a)
 70 {
 71     //小数的位数
 72     int i = a.size()-1;
 73     for(; i >= 0 && a[i] == '0'; --i);
 74     int j = 0;
 75     for(; j < a.size() && a[j] != '.'; ++j);
 76     return i - j;
 77 }
 78 inline string exchange(string& a)
 79 {
 80     a = del_f_zero(a);//去除前导零
 81     if(is_decimals(a))
 82     {
 83         a = del_l_zero(a);//如果是小数的话,去除末尾零
 84         a = del_point(a);//去除小数点
 85     }
 86     return a;
 87 }
 88 
 89 inline string add_point(string& a, int p)
 90 {
 91     if(p > a.size())
 92     {
 93         //0.0003
 94         string zero(p-a.size(),'0');
 95         a = "." + zero + a;
 96     }
 97     else
 98     {
 99         p = a.size()-p;
100         string t1(a.begin(),a.begin()+p);
101         string t2(a.begin()+p, a.end());
102         a = t1 + "." + t2;
103     }
104     if(a[0] == '.')
105     a = "0" + a;
106     return a;
107 }
108 inline string reverse(const string& a)
109 {
110     string t(a.rbegin(), a.rend());
111     return t;
112 }
113 //***************整数部分运算**************************
114 
115 inline string add(vector<string>& svec)
116 {
117     int j = svec.size()-1, i;
118     string result(svec[j]);
119     --j;
120     while(j >= 0)
121     {
122         result = reverse(result);
123         svec[j] = reverse(svec[j]);
124         int c = 0;
125         for(i = 0; i < svec[j].size(); ++i)
126         {
127             result[i] = result[i] - '0' + svec[j][i] - '0' + c;
128             c = result[i] / 10;
129             result[i] %= 10;
130             result[i] += '0';
131         }
132         while(c && i < result.size())
133         {
134             result[i] = result[i] - '0' + c;
135             c = result[i] / 10;
136             result[i] %= 10;
137             result[i] += '0';
138             ++i;
139         }
140         if(c)
141             result += '1';
142         result = reverse(result);
143         --j;
144     }
145     return result;
146 }
147 inline string power(string& a, int n)
148 {
149     if(a == "0")
150         return "0";
151     string final(a);
152     a = reverse(a);
153     for(int i_case = 2; i_case <= n; ++i_case)
154     {
155         int j = 0;
156         vector<string> svec;
157         while(j < a.size())
158         {
159             string result(final);
160             result = reverse(result);
161             int c = 0;
162             for(int i = 0; i < result.size(); ++i)
163             {
164                 result[i] = (result[i] - '0')*(a[j] - '0') + c;
165                 c = result[i] / 10;
166                 result[i] %= 10;
167                 result[i] += '0';
168             }
169             if(c)
170                 result += c + '0';
171             string zero(j, '0');
172             result = reverse(result);
173             result += zero;//对应位末尾加零
174             svec.push_back(result);
175             ++j;
176         }
177         final = add(svec);//更新每次结果
178     }
179     return final;
180 }
181 //*******************主函数****************************
182 int main()
183 {
184     string a;
185     int n;
186     ios::sync_with_stdio(false);
187     while(cin >> a >> n)
188     {
189         int p = 0;
190         //cout << "point: " << p << endl;
191         if(is_decimals(a))//如果是小数的话,转换成整数,并传递小数的位数
192         {
193             p = point(a);
194             //cout << "p: " << p << endl;
195         }
196         a = exchange(a);
197         //cout << "exchange: " << a << endl;
198         a = power(a, n);
199        // cout << "power: " << a << endl;
200         p *= n;
201         //cout << "P: " << p << endl;
202         if(p)
203             a = add_point(a, p);
204         //cout << "add: " << a << endl;
205         if(a[0] == '0' && a[1] == '.')
206         {
207             string t(a.begin()+1, a.end());
208             a = t;
209         }
210         cout << a << endl;
211     }
212     return 0;
213 }
214 
215 /*
216 0
217 00.000
218 0.00
219 0.300
220 0.56000
221 00.0000300
222 
223 
224 0.000 10
225 3.12 10
226 0.003 3
227 
228 
229 */
1063:超时,在UVA上可以AC
原文地址:https://www.cnblogs.com/sanghai/p/2999845.html