给你K,M,求最小的n使之M^n的第K位是7.
由于K小于1000,所以可能得用大数。但是我想想能不能不用大数,就在推公式。用对数神马的。数字小的可以解决,大的有错误 = =。。。无语死了。我还是用大数吧。还是用大数写着快啊。。。
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int num[1000];
int main()
{
int k,m,n,len,i;
while( scanf("%d%d",&k,&m) != EOF )
{
memset(num,0,sizeof(num));
num[0] = 1; len = 1;
for(n=1; n<=100; n++)
{
for(i=0; i<len; i++)
num[i] *= m;
for(i=0; i<len; i++)
if( num[i] >= 10 )
{
num[i+1] += num[i]/10;
num[i] %= 10;
}
while( num[i] >= 10 )
{
num[i+1] += num[i]/10;
num[i] %= 10;
i++;
}
while( num[i] != 0 )
i++;
len = i;
if( num[k-1] == 7 )
{
printf("%d/n",n);
break;
}
}
}
return 0;
}