连写数
题目:从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