求循环小数的第n位是什么,我的代码哪里错了?

数学课上,楠楠学习了一个新的知识。
两数相除,如果得不到整数商,会有两种情况:一种是得到有限小数,另一种是得到无限小数。从小数点后某一位开始依次不断地重复出现前一个或一节数字的十进制无限小数,叫做循环小数,如2.9666..., (在数学中它读作“二点九六,六循环” ), 定义循环小数的缩写法是将第一个循环节以后的数字全部略去,并将第一个循环节首末用括号括起来。
例如:
2.966666... 缩写为 2.9(6)
35.232323…缩写为 35.(23)
楠楠发现,根据循环小数的特征,很快能算出这个循环小数中小数点后第n位的数字,你能吗?
【输入】
共2行。第一行,包含一个整数n(n≤100000),表示求小数点后的第n位。第二行,一个字符串,用缩写法表示的一个循环小数。
【输出】
一行,包含一个整数,表示循环小数中小数点后第n位的数字。
For example:
Input
Result
10
352.19(7)
7
我的代码是


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int i=0,j=0,n;
    cin>>n;
    char a,b[1000],c[1000];
    while(1)
    {
        cin>>a;
        if(a=='.')
        {
            break;
        }
    }
    while(1)
    {
        cin>>b[i];
        if(b[i]=='(')
        {
            break;
        }
        i++;
    }

    while(1)
    {
        cin>>c[j];
        if(c[j]==')')
        {
            break;
        }
        j++;
    }

    if(n<=i)
    {
        cout<<int(b[n-1]-'0')<<endl;
    }
    else
    {
        if((n-i)%j==0)
        {
            cout<<int(c[j-1]-'0')<<endl;;
        }
        else
        {
            cout<<int(c[(n-i)%j-1]-'0')<<endl;
        }
    }
    return 0;
}

1个回答

你看看是不是这
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐