题目大意:给三个数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 ",num); } return 0; }