题目是给出两个整数N,M,问多少个N能整除M,如果不能整除就输出0,否则输出位数。
例如:1 ,5,多少个1都不能整除5,所以输出0,再比如1, 13 ,111111能整除13,因此输出6
这题思路是求余运算,保存每一个余数,一旦余数为0则表明可以,输出当前位数,一旦余数在之前出现过则表明无法整除,因为之后将会循环出现余数。
代码如下
#include <iostream>
using namespace std;
int main()
{
int N,M,i,F[10000];
unsigned long long x;
while(cin>>N>>M)
{
x=0;
for ( i = 0; i < 10000; i++ )
F[ i ] = 0;
for(i=0;i<M;i++)
{
F[x]=1;
x = (x*10+N)%M;
if(x%M==0)
{
cout<<i+1<<endl;
break;
}
if(F[x]==1)
{
i=10000;
break;
}
}
if(i==10000)
cout<<0<<endl;
}
return 0;
}