一道编程题目;求编程思路,不要求有具体过程,不过如有过程则更好!

来源:百度知道 编辑:UC知道 时间:2024/05/21 20:50:26
一个尾数前移问题,
如: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++)

102564
q = 4
设 4前面的东西叫 r 比如这里 r 是 10256
有题意得 (10r+q)p=p*10^(floor(log(r))+1)+r

然后~ 让r穷举一下吧……

#include <stdio.h>
#include <math.h>

int main (int argc, char const *argv[])
{
int p, q;
int r;
printf("Please input p and q:");
scanf("%d %d", &p, &q);

r = 0;
while(1){
if( (10 * r + p) * q == p * (int)pow(10, floor(log10(r))+ 1) + r )
break;
r++;
}
printf("%d%d\n", r, p);
return 0;
}

只测试了能够通过 4 4 102564

有意思的问题~

你看看我写的:
#include "stdio.h"
main()
{
int a,i,j,k,cs,ws,ws_,num;
int ws_1;
scanf("%d%d",&cs,&ws);
for (i=1;i>0;i++)
{
j=i;
num=1;
ws_=ws;
for (;i>0;)
{
if (j/10 == 0) break;
else
{
num++;
j/=10;
}
}
for (k