蒟蒻求助,77分圆谷代码
查看原帖
蒟蒻求助,77分圆谷代码
923403
FallingFYC_楼主2023/6/21 20:21
#include <bits/stdc++.h>
using namespace std;
int a , b , dividend , divisor , r , d , decimalPoint , repetendPoint , ans[100000];
vector<int> re;
bool flag = true;

int len(int n)
{
	if (n == 0) return 1;
	else return log10(n) + 1;
}

int main()
{
    cin >> a >> b;
    int p = 0;
    dividend = a;
    divisor = b;
    if (dividend >= b)
        decimalPoint = 1;
    while (flag)
    {
        p++;
        if (dividend < divisor)
        {
            re.push_back(dividend);
            if (decimalPoint == 0) decimalPoint = p;
            dividend *= 10;
            continue;
        }
        r = dividend % divisor;
        d = dividend / divisor;
        ans[p] = dividend / divisor;
        if (r == 0) flag = false;
        for (int i = 0 ; i < re.size() ; i++)
        {
            if (re[i] == r)
            {
                repetendPoint = i + 1;
                flag = false;
            }
        }
        if (flag) re.push_back(r);
        dividend %= divisor;
        dividend *= 10;
    }
    int enter = 0;
    for (int i = 1 , j = len(ans[i]) ; i <= (repetendPoint == decimalPoint ? p : p - 1) ; i++ , j += len(ans[i]))
    {
        if (enter % 76 == 0 && enter > 0) cout << endl; 
        cout << ans[i];
        if (i == decimalPoint)
        {
            cout << '.';
            enter++;
        }
        if ((repetendPoint == decimalPoint ? i : j) == repetendPoint)
        {
            cout << '(';
            enter++;
        }
        enter += len(ans[i]);
    }
    if (decimalPoint == p) cout << 0;
    if (repetendPoint != 0) cout << ')';
	return 0; 
}

记录

2023/6/21 20:21
加载中...