【题目】两个整数相除得到循环小数,求循环节
程序员文章站
2024-03-19 19:01:22
...
问题:
两个整数相除得到循环小数,求循环节
例如:
1/7 = 0.142857142857142857…
循环节是142857
思路:
除法运算时,两个数相除得到整数和余数,然后把余数乘以10,再除以除数得到下一位,以此类推:
当得到的整数和余数在之前有出现过,小数就出现循环了。
代码:
void function(int a, int b)
{
vector<vector<int>> li;
vector<int> tmp(2);//相除得到的整数答案和余数
bool flag = false;
int integer;
int remainder;
int begin = 0;
while (!flag)
{
integer = a / b;
remainder = a % b;
for (int i = 0; i < li.size(); i++)
{
//如果相除得到的整数答案和余数在之前出现过,那么就会开始循环
if (li[i][0] == integer && li[i][1] == remainder)
{
flag = true;
begin = i;
break;
}
}
cout << integer << " " << remainder << endl;
tmp[0] = integer;
tmp[1] = remainder;
li.push_back(tmp);
a = remainder * 10;
}
for (int i = begin; i < li.size(); i++)
cout << li[i][0];
cout << endl;
}
上一篇: B08.python智能盯盘 + 声音报警 - 有意思的小东西【黑科技】
下一篇: 绘制UML图