题意:
给定a,b,c,问a除b小数点后面第几位会出现数字c,给定的c的范围为[0,9]
数据范围:1<=a,b<=1e5,0<=c<=9
解法:
模拟除法,标记每次的余数,如果余数出现重复说明小数无限循环,无解。
因为a,b<=1e5,最多模拟1e5次就会出答案。
code:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxm=1e5+5;
int mark[maxm];
signed main(){
int a,b,c;cin>>a>>b>>c;
a%=b;
int cnt=0;
while(1){
a*=10;
cnt++;
int d=a/b;//当前这一位的数
a%=b;
if(d==c){
cout<<cnt<<endl;
return 0;
}
if(mark[a]){
cout<<-1<<endl;
return 0;
}
mark[a]=1;//标记余数
}
return 0;
}