给定一个分数,判断其是否是一个无限　循环小数　,并输出它的第一个循环节。　例如:分数　1/3　是一个无限　循环小数　,第一个循环节为　3;而2/5　不是一个无限　循环小数　。　输入格式　不多于　100　行,每行一个　m/n　形式的分数...　给定一个分数,判断其是否是一个无限循环小数,并输出它的第一个循环节。　例如:分数　1/3　是一个无限循环小数,第一个循环节为　3;而2/5　不是一个无限循环小数。　输入格式　不多于　100　行,每行一个　m/n　形式的分数(0　using　namespace　std　;　int　main　(　)　{　char　c　;　int　m　,　n　,　i　;　while　(　scanf　(　"%d/%d"　,　&　m　,　&　n　)　!=　EOF　)　{　int　nums　[　100001　]　=　{　0　}　;　string　res　ans　;　i　=　1　;　nums　[　m　]　=　i　++　;　int　left　;　while　(　m　!=　0　)　{　m　*　=　10　;　left　=　m　/　n　;　res　+　=　to_string　(　left　)　;　m　=　m　%　n　;　if　(　nums　[　m　]　)　{　//注意此处循环的上下界　for　(　int　j　=　nums　[　m　]　-　1　;　j　<　i　-　1　;　j　++　)　printf　(　"%c"　,　res　[　j　]　)　;　printf　(　"\n"　)　;　break　;　}　else　{　nums　[　m　]　=　i　if　(　m　==　0　)　printf　(　"0\n"计算机内部表示的浮点数只有有限的精确位数。现在要找一种方法,使一个分数的精确值能够被表示为十进制小数,如果是一个无限循环小数,则指出它从哪一位到哪一位是循环节。　输入格式　第1行:整数　()　为问题数　第2∽T+1　行:每行为每一个问题中的用一个空格分隔的分子　n　和分母　m　()。　输出格式　对于每个问题,输出一行问题的编号(0　开始编号,格式:case　#0:　等),然后在一行中输出精确值小数(无循环)或一个小数直到第一个循环节结束。如果有循环,则在下一行中以两个整数表示从哪一位到哪一位是循环节,中间用一个　“-”　号分隔。　样例　input　output　case　#0:　case　#1:　大佬思路:利用hash存储。　#　include　　#　include　　#　include　　int　main　(　)　{　using　u32　=　uint32_t　;　u32　t　;　std　::　cin　>>　t　;　for　(　u32　i　=　0　;　i　!=　t　;　++　i　)　{　u32　n　,　m　;　std　::　cin　>>　n　>>　m　;　std　::　cout　<<　"case　#"　<<　i　<<　":\n"　<<　n　/　m　;　//输出整数部分　n　=　n　%　m　*　10　;　if　(　!　n　)　{　std　::　cout　<<　'\n'　;　continue　;　}　std　::　cout　using　BitPos　=　u32　;　using　Dividend　=　u32　;　u32　bit_cnt　=　1　;　std　::　unordered_map　<　Dividend　,　BitPos　>　table　{　{　n　,　bit_cnt　}　}　;　//被除数,以及其出现位数　do　{　std　::　cout　<<　n　/　m　;　n　=　n　%　m　*　10　;　if　(　auto　[　it　,　ok　]　=　table　.　insert　(　{　n　,　bit_cnt　+　=　1　}　)　;　!　ok　)　{　std　::　cout　<<　'\n'　<<　it　-　>　second　bit_cnt　-　1　;　break　;　}　}　while　(　n　)　;　std　::　cout　<<　'\n'