Just a Numble
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2106 Accepted Submission(s): 986
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
這道題,怎麼說呢,第一次看,有點嚇到啊,
被m,n范圍,
又是一道大數題了麼。。o(╯□╰)o
好討厭的說。。。
算一算怎麼解呢?後來發現,就模擬除法運算,很簡單就算出來了。
比如當n=4, 首先判斷1%4==0 不相等,
按照除法規則就需要 將余數乘以10 再判斷,而余數1乘以10 再除以4得到的便是小數點後第一個數,
再判斷余數1乘以10以後的數與4取余是否等於0,不等就再次循環。
啊,還要注意碰到無限循環小數,你就悲劇了,所以,要利用m,
題目求第m個位置,我們就算到第m個位置結束,break就OK了,
嘿嘿,又AC一道題啦O(∩_∩)O~
//just a numble #include#include using namespace std; int arr[100001]; void set_arr(int n,int m) { memset(arr,0,sizeof(arr)); int i,j,k; i=k=1; while((k=k%n)!=0) { k*=10; arr[i]=k/n; ++i; // 如果i大於m,不管是有限小數還是無限的,全跳出來 if(i>m) break; } return; } int main() { int n,m; int i,j,len; while(cin>>n>>m) { set_arr(n,m); cout<