USACO 3.2 Stringsobits

1 /*
2 PROG: kimbits
3 ID: jiafeim1
4 LANG: C++
5 */
6 #include <algorithm>
7 #include <iostream>
8 #include <fstream>
9 #include <string>
10 using namespace std;
11
12 std::ofstream fout("kimbits.out");
13
14 unsigned long upper[35][35]={0};
15 void work(unsigned long n, unsigned long l, unsigned long i)
16 {
17 unsigned long s;
18
19 if(n == 0)
20 return;
21
22 s = upper[n-1][l];
23 if(s < i) {
24 fout<<"1";
25 work(n-1, l-1, i-s);
26 } else {
27 fout<<"0";
28 work(n-1, l, i);
29 }
30 }
31
32
33 int main()
34 {
35 std::ifstream fin("kimbits.in");
36
37 unsigned long n,l,i;
38 fin>>n>>l>>i;
39
40 unsigned long count = 0;
41
42 unsigned long cur = 1,temp;
43
44 for(int i = 0;i!=n;++i)
45 {
46 upper[0][i] = 1;
47 }
48
49 for(unsigned long len=1;len<=n;++len)
50 {
51 upper[len][0] = 1;
52 for(unsigned long gr = 1;gr<len;++gr)
53 {
54 upper[len][gr]=upper[len-1][gr]+upper[len-1][gr-1];
55 }
56 upper[len][len] = upper[len-1][len-1] << 1;
57 for(int i = len+1;i<=l;++i) upper[len][i] = upper[len][len];
58
59 }
60
61 work(n,l,i);
62
63 fout<<endl;
64 fin.close();
65 fout.close();
66 return 0;
67 }
TASK: kimbits
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 3032 KB]
   Test 2: TEST OK [0.000 secs, 3032 KB]
   Test 3: TEST OK [0.000 secs, 3032 KB]
   Test 4: TEST OK [0.000 secs, 3032 KB]
   Test 5: TEST OK [0.000 secs, 3032 KB]
   Test 6: TEST OK [0.000 secs, 3032 KB]
   Test 7: TEST OK [0.000 secs, 3032 KB]
   Test 8: TEST OK [0.000 secs, 3032 KB]
   Test 9: TEST OK [0.000 secs, 3032 KB]
   Test 10: TEST OK [0.000 secs, 3032 KB]
   Test 11: TEST OK [0.000 secs, 3032 KB]
   Test 12: TEST OK [0.000 secs, 3032 KB]
   Test 13: TEST OK [0.000 secs, 3032 KB]

All tests OK.
posted @ 2011-05-13 18:34  幻魇  阅读(278)  评论(0编辑  收藏  举报