倒數,顧名思義就是用1除以被倒數得出的結果,例如2的倒數是0.5,0.5的倒數是2。現在我們需要獲得正有理數的倒數。
正有理數的表示格式:
《整數部分》 + [小數點]+ [小數非迴圈部分] [(迴圈部分)]
其中 <> 為必填部分, 為可選部分, 如果選了小數點,則後面肯定有小數部分。
正有理數的表示要求:
整數部分十位數字以後不能有多餘的0,如 00123 是非法的有理數
小數後面不能有多餘的0,如 0.123000 , 0.12(0) 是非法的有理數
可以放進迴圈部分的小數一定要放進迴圈部分,不能留在非迴圈部分,如 0.123(3) ,12.123234(234) 是非法的
小數迴圈部分不能是 (9),如果是(9)則需要進一處理,如 0.(9)=1 , 0.2(9)=0.3
輸入只有一行,代表乙個正有理數,符合上述的有理數表示要求,每一行最多100個字元。
輸出一行,代表輸入的正有理數的倒數,要求符合上述有理數的表示要求。
輸入資料保證輸出的正確答案不超過100個字元。
sample input1
3sample input2
0.(3)
sample output1
0.(3)
sample output2
3先把正有理數轉化成分數,這裡就解決迴圈小數,其他的很好處理。
設分母為y
yy,分子為xxx。
先處理分母:分母分為兩個部分:1.前一部分是9,有迴圈節的長度q
qq個9;2.後一部分是0,有非迴圈節的長度p
pp個0。
然後是分子:設非迴圈節的數為g
gg,迴圈節的數為l
ll,則x=g
∗(10
q−1)
+l
x=g*(10^q-1)+l
x=g∗(1
0q−1
)+l,即非迴圈節的數∗
*∗迴圈節的長度個9+迴圈節。
如果整數部分大於0,分子分子就加上整數部分∗
*∗分母。
最後就是高精度除法:分母/
//分子。
非常非常不建議看**……
#include
#include
#include
using
namespace std;
struct gjd
;gjd a,b,c,t,k,u,o,fz,fm,now,ans,ha[
521]
;int tt,jh,xhj,an,set[
521]
;char s[
105]
;void
dd(gjd &x)
void
cf(gjd x,gjd y,gjd &z)
} z.l=x.l+y.l;
while
((z.num[z.l]==0
)&&(z.l>1)
)z.l--;}
void
inc(gjd x,gjd y,gjd &z)
if(z.num[z.l+1]
)z.l++;}
void
dec(gjd x,gjd y,gjd &z)
z.l=x.l;
while
((z.num[z.l]==0
)&&(z.l>1)
)z.l--;}
intcmp
(gjd x,gjd y)
return0;
}voidef(
)}inthash
(gjd x)
else
return set[h];}
void
div()}
if(pd)xhj=pd;
else xhj=0;
}int
main()
}if(c.l)
else
if(b.l)
else fm.l=
1,fm.num[1]
=1,fz=a;
div();
for(i=
1;i(ans.num[i]!=0
)break
;for
(i;i<=fm.l;i++
)printf
("%d"
,ans.num[i]);
if(ans.l>fm.l)
for(i;i)printf
("%d"
,ans.num[i]);
printf
("(");
for(i;i<=ans.l;i++
)printf
("%d"
,ans.num[i]);
printf
(")");
}else
for(i;i<=ans.l;i++
)printf
("%d"
,ans.num[i]);
}fclose
(stdin);
fclose
(stdout);
return0;
}
廣州市選2014 Tree
下圖展示了一種二叉樹 這種二叉樹的每個葉子節點上都標註了權值,而且具有以下有趣的特性 每個非葉子節點,其左右子樹葉子節點的權值之和相等。我們稱這種二叉樹叫平衡二叉樹。我們將一棵平衡二叉樹葉子節點的權值從左到右列出來,假如這個權值序列是另乙個序列a的子串行,我們稱這棵平衡二叉樹 隱藏 在序列a當中。在...
2014廣州市選day1 字串距離題解
給出兩個由小寫字母組成的字串 x 和y 我們需要算出兩個字串的距離,定義如下 1 我們可以在字串的頭 尾 中間插入若干空格,組成乙個新的擴充套件串 2 對x擴充套件成擴充套件串x1,對y擴充套件成擴充套件串y1,並且令x1和y1具有相同的長度 3 定義x1 y1的距離為每個對應的字元的距離之和,其中...
省選 NOI刷題Day1
bzoj4864 splay亂搞 bzoj3669 正解lct,考慮上下界的spfa可過 bzoj3668 位運算 暴力 bzoj3670 kmp dp bzoj3671 含有最小的乙個數的路徑一定比不含的優 貪心 bzoj1564 按數值排序,就得到了那個treap的中序遍歷,用dp l,r,k ...