uva 550 有趣的乘法(dfs)

题目大意:给三个数A(进制)、B(如*****7的最后一个数字7)、C(*****7*4的后面的因数4)求符合条件下的第一个因数的位数最少

例子: 179487 * 4 = 717948 (10进制)

注意到没7*4%10=8,8就是第一个因数的十位数字,进位7*4/10=2;

第二个数字(8*4+2)%10=4,进位(8*4+2)/10=3;

..........

当一个数字等于B时,且前一个进位上来的值为0时候符合题意;

AC 代码:

 

 

#include<iostream>
#include<cstdio>
using namespace std;

int num,flag;
int A,B,C;

void dfs(int a,int b,int c,int ret)
{
    if(b==B && ret==0)
    {
        if(flag)
        {
            return ;
        }
        flag=1;
    }
    int t=b*c+ret;
    b=t%a;
    ret=t/a;
    num++;
    dfs(a,b,c,ret);
}
int main()
{
    while(cin>>A>>B>>C)
    {
        num=0;flag=0;
        dfs(A,B,C,0);
        printf("%d\n",num);
    }
    return 0;
}

 

 

 

posted on 2013-07-30 21:21  雄..  阅读(180)  评论(0编辑  收藏  举报

导航