链接:https://ac.nowcoder.com/acm/problem/22935
来源:牛客网
写一个程序,输入一个形如N/D的分数(N是分子,是分母),输出它的小数形式。
如果小数有循环节的话,把循环节放在一对圆括号中。例如,
1/3 = .33333333写成0.(3)
41/333 = 0.123123123…写成0.(123)
用xxx.0成表示整数
典型的转化例子:
1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)
输入
复制
45 56
输出
复制
0.803(571428)
代码
#include<bits/stdc++.h>
using namespace std;
在这里插入代码片
int num[100005];
string st;
int main()
{
int x,d,n;
cin>>n>>d;
x=n/d;
n=n%d;
if(!n)
printf("%d.0\n",x);
else{
st+=:to_string(x)+’.’;//旧编译器通不过这个函数
memset(num,-1,sizeof(num));
string j;
while(n&&num[n]-1)
{
num[n]=j.size();
n*=10;
j+=n/d+‘0’;
n%=d;
}
if(!n)st+=j;
else st+=j.substr(0,num[n])+’(’+j.substr(num[n])+’)’;
}
for(int i=0;i<st.size();i++)
{
cout<<st[i];
if((i+1)%760) cout<<endl;
}
return 0;
}