一个编程题目,求解题思路,不要求过程,当然有过程更好,望各位高手不吝赐教!
一个尾数前移问题,如:102564
它的尾数是4;
将尾数前移得:410256;
而刚好:410256能整除102564且为4;
现在的问题是:
我们将尾数记为:p;
将尾数前移后所得数去整除原数,所得结果记为: q;(前提p能被q整除);
从键盘输入p和q;
从屏幕输出:与之对应的原数;
输入举例:
4 4
输出举例:
102564
我对这个程序是这样实现的:
# include<stdio.h>
void main()
{
long a[11],m,n,i,j,p,q,flag,flagf=0,k;
printf("Please enter two numbers 2<=q<=p<=9!\n");
scanf("%ld%ld",&p,&q);
a[1]=p;
for(a[10]=0;a[10]<=9;a[10]++)
for(a[9]=0;a[9]<=9;a[9]++)
for(a[8]=0;a[8]<=9;a[8]++)
for(a[7]=0;a[7]<=9;a[9]++)
for(a[6]=0;a[6]<=9;a[6]++)
for(a[5]=0;a[5]<=9;a[5]++)
for(a[4]=0;a[4]<=9;a[4]++)
for(a[3]=0;a[3]<=9;a[3]++)
for(a[2]=0;a[2]<=9;a[2]++)
{
for(j=10;j>=2;j--)
{
if(a[j]!=0)
{
flag=j;
break;}
}
m=n=0;
while(j>=2)
{
for(k=1;k<=j-1;k++)
a[j]=a[j]*10;
n=n+a[j];
}
n=n+a[1];
j=flag;
while(j>=2)
{
a[j]=a[j]/10;
m=m+a[j];}
for(k=1;k<=flag-1;k++)
a[1]=a[1]*10;
m=m+a[1];
if(m%n==0)
if(m/n==q)
{
printf("%ld",n);
flagf=1;
break;}
a[1]=p;
}
if(flagf!=1)
printf("NOt found!\n");
getch();
}
下面是我的问题:
我的着个程序陷入了死循环。
但我相信这个题目肯定还有其他解法,望各位高手指教一二;
只要告诉我基本思路就可一了。