Problem Description
Now give you two integers n m, you just tell me the m-th number after radix point in 1/n,for example n=4,the first numble after point is 2,the second is 5,and all 0 followed 

Input
Each line of input will contain a pair of integers for n and m(1 <=n <=10^7,1 <=m <=10^5) 
 
Output
For each line of input, your program should print a numble on a line,according to the above rules 

Sample Input
4 2
5 7
123 123 

Sample Output
5
0
8
这个题是网友问我的题,当时我写的程序是这样的
void main()
{
    
double n,m,i=1;
    cin
>>m>>n;
    
double q=1/m;
    
for(;n>0;n--)
        i
=i*10;
    q
=q*i;
    
long p=90,q1=(int)q,i1=(int)i;
    
    
while(p>10)//求个位数
    {
        p
=q1%10;
        q1
=q1/10;
    }

    cout
<<p<<endl;
    
}


可是发现了问题:用123检测时,越界了,于是成了负值。
于是我就发了帖子,大家给了我很多帮助。

C1053710211 给出了思路:这个题不能这样做,应该模拟除法的过程,不停的将余数*10,把商的每位求出来,直到求出第m位,循环结束。

星羽哥哥又给出了代码:
#include "iostream"
using namespace std;


int main() {

    
int n;
    
int m;
    
int r;
    
int t = 1;
    
int d = 10;

    cin
>>n>>m;

    
for (int i = 1; i <= m; ++i) {
        
if (t == 0{
            r 
= 0;
            
break;
        }

        
if ((r = (d * t / n)) == 0{
            d 
*= 10;
        }
 else {
            t 
= (d * t) % n;
            d 
= 10;
        }

    }


    cout
<<r<<endl;

    
return 0;
}

---------

测试

31 10
5
请按任意键继续. . .


可是我在暑假总结时发现星羽的的代码的可读性很差,所以自己有写了个代码:
int main() 

  
    
int dividend,
        digit;
    
int temp=10;
    cin
>>dividend>>digit;
    
while(digit!=1)
    
{    
        temp
=temp%dividend;
        temp
*=10;
        
--digit;

    }

    cout
<<temp/dividend;
    
return 0
}
 

我想比星羽的简单多了吧