Advertisement
Guest User

Untitled

a guest
May 5th, 2013
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.78 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <vector>
  5. #include <set>
  6. #include <algorithm>
  7. #include <string>
  8. #define enter printf("\n");
  9. #define ull unsigned long long
  10. #define ll long long
  11. #define sort(a) sort(a.begin(), a.end())
  12.  
  13. using namespace std;
  14. int INF = 1000000007;
  15. vector<int> a;
  16. int n, x, y;
  17. int co[6][7] = {{1, 2, 0, 0, 0, 0, 0}, {1, 3, 4, 0, 0, 0, 0}, {1, 4, 7, 8, 0, 0, 0}, {1, 5, 11, 15, 16, 0, 0}, {1, 6, 16, 26, 31, 32, 0}, {1, 7, 22, 42, 57, 63, 64}};
  18. void writeln(int a){printf("%d\n", a);}void writeln(int a, int b){printf("%d %d\n", a, b);}void writeln(int a, int b, int c){printf("%d %d %d\n", a, b, c);}void writeln(int a, int b, int c, int d){printf("%d %d %d %d\n", a, b, c, d);}void write(int a){printf("%d", a);}void write(int a, int b){printf("%d %d", a, b);}void write(int a, int b, int c){printf("%d %d %d", a, b, c);}void write(int a, int b, int c, int d){printf("%d %d %d %d", a, b, c, d);}void read(int &a){scanf("%d", &a);}void read(int &a, int &b){scanf("%d %d", &a, &b);}void read(int &a, int &b, int &c){scanf("%d %d %d", &a, &b, &c);}void read(int &a, int &b, int &c, int &d){scanf("%d %d %d %d", &a, &b, &c, &d);}void readln(int &a){scanf("%d\n", &a);}void readln(int &a, int &b){scanf("%d %d\n", &a, &b);}void readln(int &a, int &b, int &c){scanf("%d %d %d\n", &a, &b, &c);}void readln(int &a, int &b, int &c, int &d){scanf("%d %d %d %d\n", &a, &b, &c, &d);}
  19.  
  20. void readln(vector<int> &f, int n)
  21. {
  22.     int x;
  23.     for (int i = 1; i <= n; i++)
  24.     {
  25.         read(x);
  26.         f.push_back(x);
  27.     }
  28. }
  29.  
  30. void writeln(vector<int> &f)
  31. {
  32.     int x;
  33.     for (int i = 0; i < f.size(); i++)
  34.         printf("%d%c", f[i], i == f.size() - 1 ? '\n' : ' ');
  35. }
  36.  
  37. double test()
  38. {
  39.     readln(n, x, y);
  40.     x = abs(x);
  41.     a.resize(1);
  42.     a[0] = 1;
  43.     for (int i = 1; a[i - 1] < 1000000;i++)
  44.         a.push_back((2 * i + 1) * (i + 1));
  45.     int i = 0;
  46.     while (n > a[i])
  47.         i++;
  48.     int count = a[i] - n;
  49.     if (count == 0)
  50.         return (int) (x + y <= 2 * i);
  51.     if (x + y < 2 * i)
  52.         return 1;
  53.     if (x + y > 2 * i)
  54.         return 0;
  55.     if (y == 2 * i)
  56.         return 0;
  57.     count = n - a[i - 1];
  58.     if (count - 2 * i > y)
  59.         return 1;
  60.     if (count < y)
  61.         return 0;
  62.     bool f = false;
  63.     if (count > 2 * i)
  64.     {
  65.         count -= 2 * i;
  66.         y = 2 * i - y;
  67.         f = true;
  68.     }
  69.     //writeln(n, x, y, count);
  70.     double h = co[count - 1][y];
  71.     for (int j = 0; j < count; j++, h /= 2);
  72.     return !f ? 1.0 - h : h;
  73. }
  74.  
  75. int main()
  76. {
  77.     freopen("input.txt", "r", stdin);
  78.     freopen("output.txt", "w+", stdout);
  79.     int T;
  80.     readln(T);
  81.     for (int tttt = 0; tttt < T; tttt++)
  82.     {
  83.         printf("Case #%d: ", tttt + 1);
  84.         printf("%.8f\n", test());
  85.     }
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement