日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

poj 1001 Exponentiation

系統(tǒng) 1878 0
Time Limit: 500MS Memory Limit: 10000K
Total Submissions: 71191 Accepted: 16721

??? 本題總的來說并不是很難,但是卻很麻煩,我在北大上做題時wrong了n次,最終總算通過了,我不知道大牛們是怎么做的,但是我的做法的確是很麻煩

??? 思想是:就是將輸入的自然數(shù)a去掉小數(shù)點后,然后進行n次大整數(shù)相乘,每次的乘數(shù)是輸入以后去掉小數(shù)點的a,被乘數(shù)是前面乘過以后的結(jié)果。在結(jié)束完n次以后將小數(shù)點加到合適的位置,并進行前后的除零。

代碼:

?

      
1 #include < stdio.h >
2 #include < string .h >
3 ? int main()
4 {
5 int i,j,sum,k,res[ 500 ][ 500 ],flag = 0 ,b,dox,mark,deadline,t;
6 char result[ 500 ],a[ 65 ],tran[ 500 ];
7 while (scanf( " %s " ,a) != EOF)
8 {
9 sum = 0 ;k = 0 ;dox = 0 ;mark = 0 ;
10 memset(result, 0 , sizeof (result));
11 result[ 0 ] = ' 1 ' ;
12 getchar();
13 scanf( " %d " , & b);
14 int len1 = strlen(a);
15 if (a[ 0 ] == ' 0 ' )
16 {
17 for (i = 2 ;a[i] != ' \0 ' ;i ++ )
18 a[i - 2 ] = a[i];
19 len1 -= 2 ;
20 dox = len1;
21 a[len1] = ' \0 ' ;
22 }
23 else
24 {
25 for (i = 0 ;a[i] != ' \0 ' ;i ++ )
26 {
27 if (a[i] == ' . ' )
28 {
29 mark = 1 ;
30 len1 -- ;
31 continue ;
32 }
33 if (mark)
34 {
35 a[i - 1 ] = a[i];
36 dox ++ ;
37 }
38 }
39 a[len1] = ' \0 ' ;
40 }
41 for (t = 1 ;t <= b;t ++ )
42 {
43 memset(res, 0 , sizeof (res));
44 int len2 = strlen(result);
45 strcpy(tran,result);
46 for (i = 0 ;i < len2;i ++ )
47 result[i] = tran[len2 - 1 - i];
48 k = 0 ;sum = 0 ;
49 for (i = 0 ;i < len1;i ++ )
50 for (j = 0 ;j < len2;j ++ )
51 res[i][j] = (a[i] - ' 0 ' ) * (result[j] - ' 0 ' );
52 for (i = len1 - 1 ;i >= 0 ;i -- )
53 {
54 for (j = len2 - 1 ;j >= 0 ;j -- )
55 sum = sum + res[i + len2 - j - 1 ][j];
56 result[k] = sum % 10 + ' 0 ' ;
57 k = k + 1 ;
58 sum = sum / 10 ;
59 }
60 for (i = len2 - 2 ;i >= 0 ;i -- )
61 {
62 for (j = 0 ;j <= i;j ++ )
63 sum = sum + res[i - j][j];
64 result[k] = sum % 10 + ' 0 ' ;
65 k = k + 1 ;
66 sum = sum / 10 ;
67 }
68 if (sum != 0 )
69 {
70 result[k] = sum + ' 0 ' ;k = k + 1 ;
71 }
72 }
73 dox = dox * b;
74 int len = strlen(result);
75 if (dox != 0 )
76 {
77 if (dox <= len - 1 )
78 {
79 for (i = len - 1 ;i >= dox;i -- )
80 result[i + 1 ] = result[i];
81 result[dox] = ' . ' ;
82 len ++ ;
83 }
84 else
85 {
86 result[dox] = ' . ' ;
87 for (i = dox - 1 ;i > len - 1 ;i -- )
88 result[i] = ' 0 ' ;
89 }
90 }
91 deadline = 0 ;
92 len = len - 1 > dox ? len - 1 :dox;
93 for (i = 0 ;i <= len;i ++ )
94 {
95 if (result[i] != ' 0 ' )
96 {
97 if (result[i] == ' . ' )
98 deadline = i + 1 ;
99 else
100 deadline = i;
101 break ;
102 }
103 }
104 mark = 0 ;
105
106 for (i = len;i >= deadline;i -- )
107 if (mark == 1 || result[i] != ' 0 ' )
108 {
109 mark = 1 ;
110 printf( " %c " ,result[i]);
111 }
112 printf( " \n " );
113 }
114 return 0 ;
115 }
116

???? (注意:) 我在之前wrong了幾次,主要是少考慮了幾種情況,經(jīng)過某位大牛的指點才能通過,此大牛給出的例子是 :

??????????????????? 4.000 2? 結(jié)果應該是16 并非16.

?????????????????? ?10.000 2 結(jié)果應該是100 并非是1或者100.

poj 1001 Exponentiation


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 司法| 尼勒克县| 和硕县| 郑州市| 寿阳县| 文化| 芦山县| 米脂县| 天门市| 象州县| 巨鹿县| 封开县| 壶关县| 潼南县| 都昌县| 海南省| 伊吾县| 汾阳市| 铜鼓县| 潼南县| 左贡县| 天水市| 宁波市| 克东县| 竹山县| 瓮安县| 蒲城县| 若尔盖县| 拜城县| 白银市| 岳阳县| 仙游县| 衢州市| 隆化县| 读书| 阜平县| 璧山县| 峨山| 交城县| 丹江口市| 山丹县|