连写数

题目:从1一直写到整数m得到的大整数123456789101112...m称为连写数,如果这个数能被指定的正整数p(<3000)整除,求m至少为多大?p在运行时由键盘输入。

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main( void )    /* name: m1.cpp */
 5 {    int p, h, m, k, rem;
 6     cout<<"输入p=";
 7     cin>>p;
 8     while( p>1 && p<3000 )
 9     {
10         h=1;    m=1;    k=10;
11         while( (rem=h%p)!=0 )
12         {    
13             m++;
14             if( m>=k )    k*=10;
15             h=rem*k+m;
16         }
17         cout<<"m="<<m<<endl<<endl;
18         cout<<"输入p=";
19         cin>>p;
20     }
21     
22     return 0;
23 }

测试结果:

p=7, m=11

p=12, m=2

p=28,m=24

p=41, m=3

p=47, m=8

p=29, m=31

p=75, m=50

p=256, m=296

p=1129, m=2869

p=1227, m=690

p=2015, m=165

posted @ 2015-12-02 12:46  九头狮  阅读(544)  评论(1编辑  收藏  举报