vivo2020スプリングセッションキャンパス募集試験オンラインプログラミングは、 - ビットの数の積を【そのプログラム]
タイトル
制限時間:C / C ++ 1秒、2秒、他の言語
スペースの制限:C / C ++ 256M、512M、他の言語
生成物は、現在、任意の正の整数nを与えられ、そして最小の正の整数M(M> 9)、出力がある場合、そのようなm個の個々のビット(ビット、10、百は...)、Nに等しいことを出力するためのルック - で1。
入力例1:
36
出力例1:
49
例2入力:
100
出力例2:
455
問題解決のためのアイデア
タイトルは、再帰的な方法、第1の最大許容数を決定し、その後、最終的にそれを置くためのサイクルの数、およびその後再帰的操作の残数、サイクル条件の端を使用してN <10それは蚊帳の外になります。
ブロック
Javaプログラミングを使用してテストケースのコードブロック。
import java.util.*;
public class Solution {
/**
* 输入一个整形数值,返回一个整形值
* @param n int整型 n>9
* @return int整型
*/
public int solution(int n){
int res = resolve(n);
if(res>0)
{
return res;
}
return -1;
}
public int resolve(int n)
{
if(n<10)
{
return n;
}
for (int i = 9; i >1 ; --i) {
if(n%i == 0)
{
return resolve(n/i)*10+i;
}
}
return -1;
}
}