这道题比较困难
题目描述
高逐位整除数就是从其高位开始,前1位能被1整除, 前2位能被2整除,…,前n位能被n整除。对于指定的正整数n,共有多少个不同的n位高逐位整除数?对于n位高逐位整除数,n是否存在有最大值?
输入描述
多组输入,每组输入一个1-24的正整数,表示要求的高逐位数的位数。
输出描述
对于每组输入,输出对应的高高逐位数,每个数占一行(一组输入可能有多个符合条件胡数)
样例输入
24
1
样例输出
144408645048225636603816
360852885036840078603672
402852168072900828009216
1
2
3
4
5
6
7
8
9
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int n; 5 while(cin>>n){ 6 int i,j,k,p=0,s,m[3000][30],t[3000][30],a,b,h; 7 for(i=1;i<=9;i++){ 8 m[i][1]=i; 9 } 10 p=9; 11 for(i=2;i<=n;i++){ 12 s=0; 13 for(j=1;j<=p;j++){ 14 for(k=0;k<=9;k++){ 15 m[j][i]=k; 16 a=0; 17 for(b=1;b<=i;b++){ 18 a=a*10+m[j][b]; 19 a=a%i; 20 } 21 if(a==0){ 22 s++; 23 for(h=1;h<=i;h++){ 24 t[s][h]=m[j][h]; 25 } 26 } 27 } 28 } 29 p=s; 30 for(a=1;a<=p;a++){ 31 for(b=1;b<=i;b++){ 32 m[a][b]=t[a][b]; 33 } 34 } 35 } 36 for(i=1;i<=p;i++){ 37 for(j=1;j<=n;j++){ 38 cout<<m[i][j]; 39 } 40 cout<<endl; 41 } 42 } 43 return 0; 44 }