走走走,快去看看世界 2019-12-15 23:18 采纳率: 0%
浏览 353

求循环小数的第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条回答

  • rubeonly 2019-12-16 08:58
    关注

    你看看是不是这
    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!