void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

给出K,M,求最小的n使之M^n的第K位是7.

大数相加,然后判断k位,仍用数组存储,一个元素存储一位

View Code
1 #include <cstdio>
2 #include <cstdlib>
3 #include <iostream>
4 #include <string.h>
5 #include <math.h>
6  using namespace std;
7  int num[1000];
8 int main()
9 {
10 int k,m,n,len,i;
11 while( scanf("%d%d",&k,&m) != EOF )
12 {
13 memset(num,0,sizeof(num));
14 i=1;
15 num[1]=1;
16 len=1;
17 for(n=1;n<1000;n++)
18 {
19 for(i=1;i<=len;i++)//必须乘完再进位,我了个去,整了半天
20 num[i]*=m;
21 for(int i=1;i<=len;i++)
22 if(num[i]>9)
23 {
24 num[i+1]+=num[i]/10;
25 num[i]%=10;
26 }
27 while(num[i]>=10){num[1+i]+=num[i]/10;num[i]%=10;i++;}
28 if(num[i]==0)i--;
29 len=i;
30 if(num[k]==7){printf("%d\n",n);break;}
31 }
32
33 }
34 return 0;
35 }
posted on 2011-05-08 18:05  void-man  阅读(272)  评论(0)    收藏  举报