微软2014实习生及秋令营技术类职位在线测试: K-th string
2014-04-13 10:32
302 查看
import java.util.Scanner; public class KString_2 { private static int number = 33 ; private static int[] comb = new int[(number+1)*(number+2)/2]; // 预处理好的排列组合值 public static void main(String[] args) { computerComb(); //预处理获取排列组合值 Scanner in = new Scanner(System.in); int caseNumber = in.nextInt(); int num0 , num1 , kth ; while(in.hasNext()){ num0 = in.nextInt(); num1 = in.nextInt(); kth = in.nextInt() ; int result[] = new int[100] ; int length = 0 ; if(getComb(num0,num1) < kth){ System.out.println("Impossible"); continue; } while(kth > 0){ if(kth == 1){ while(num0 > 0){result[length++] = 0;num0--;} while(num1 > 0){result[length++] = 1;num1--;} break; } if(getComb(num0-1, num1) >= kth){ result[length++] = 0; num0--; } else { result[length++] = 1; kth-=getComb(num0-1, num1); num1--; } } for(int i = 0 ; i < length ; i++) System.out.print(result[i]); System.out.println(); } } private static int getComb(int num0, int num1) { if(num0 ==0 | num1==0) return 1; if(num0==1) return num1+1; if(num1==1)return num0+1; int k = num0 > num1 ? num1:num0; int n = num0 + num1 ; return comb[(n*(n+1)/2+k)]; } private static void computerComb(){ for(int n = 2 ; n <= 33 ;n++){ for(int k = 1 ; k<= n; k++) comb[n*(n+1)/2+k] = comb(n,k); } } private static int comb(int n, int k) { k = (n-k) > k ?k:n-k; int result = 1 ; for(int i = 1 ; i<= k;i++,n--) result*=n; int div = 1 ; for(int i = 1 ;i<=k;i++) div*=i; return result/div; } }
相关文章推荐
- 微软2014实习生及秋令营技术类职位在线测试-题目2 : K-th string
- 微软2014实习生及秋令营技术类职位在线测试之 2. K-th String
- 微软2014实习生及秋令营技术类职位在线测试——K-th string
- 微软2014实习生及秋令营技术类职位在线测试 K-th string
- 微软2014实习生及校招秋令营技术类职位在线测试:2.K-th string
- 微软2014实习生及秋令营技术类职位在线测试-K-th string
- 【微软2014实习生及秋令营技术类职位在线测试】题目2 : K-th string
- 微软2014实习生及秋令营技术类职位在线测试_题目4 : Most Frequent Logs
- 微软2014实习生及秋令营技术类职位在线测试[题目与答案]
- 微软2014实习生及秋令营技术类职位在线测试--String reorder
- 微软2014实习生及秋令营技术类职位在线测试(题目1 : String reorder)
- 微软2014实习生及秋令营技术类职位在线测试(题目1 : String reorder)
- 微软2014实习生及秋令营技术类职位在线测试_题目3 : Reduce inversion count
- 微软2014实习生及秋令营技术类职位在线测试:String reorder
- 微软2014实习生及秋令营技术类职位在线测试-题目1 : String reorder
- 微软2014实习生及秋令营技术类职位在线测试 题目1 : String reorder
- K-th string (微软2014实习生及秋令营技术类职位在线测试题)
- 微软2014实习生及秋令营技术类职位在线测试第一题:String reorder
- 微软2014实习生及秋令营技术类职位在线测试-2_kth string
- 【微软2014实习生及秋令营技术类职位在线测试】题目1 : String reorder