fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #include <ext/pb_ds/assoc_container.hpp>
  4. #include <ext/pb_ds/tree_policy.hpp>
  5. using namespace __gnu_pbds;
  6. #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
  7. #define FAST ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  8. typedef long long ll;
  9. typedef long double ld;
  10. const int MOD=1e9+7, OO=0x3f3f3f3f;
  11. const ll LOO=0x3f3f3f3f3f3f3f3f;
  12. #define all(x) (x).begin(),(x).end()
  13. #define mm(f, x) memset(f,x,sizeof(f))
  14. #define f(n) for(int i=0;i<n;++i)
  15. #define fa(i,a,n) for(int i=(a);i<=(n);++i)
  16. #define c(vec) for(auto &x:vec)cin>>x;
  17. #define ff(vec) for(auto &x:vec)cout<<x<<' ' ;cout<<'\n';
  18. #define fp(vec) for(auto &x:vec)cout<<x.first<<' '<<x.second<<'\n';
  19. #define debug(x) cout<<#x<<":"<<x<<endl;
  20. #define yes cout<<"YES\n";
  21. #define no cout<<"NO\n";
  22. #define pb push_back
  23. #define sz(a) (int)(a).size()
  24. const double EPS=1e-8;
  25. # define PI 3.14159265358979323846
  26. const ll MOD1=1e18+7;
  27. int dr[]={-1, -1, -1, 0, 1, 1, 1, 0};
  28. int dc[]={-1, 0, 1, 1, 1, 0, -1, -1};
  29. int dx[]={1,0,-1,0};
  30. int dy[]={0,1,0,-1};
  31.  
  32. const int N=1e7+5;
  33. ll fac[N];
  34. void pre(){
  35. fac[0]=1;
  36. for(ll i=1;i<N;i++){
  37. fac[i]=(fac[i-1]*i)%MOD;
  38. }
  39.  
  40. }
  41. ll fastpow(ll n,ll p){
  42. if(p==0)return 1;
  43. ll ans= fastpow(n,p/2);
  44. ans=ans*ans%MOD;
  45. if(p&1)ans=ans*n%MOD;
  46. return ans;
  47. }
  48.  
  49. ll modinv(ll n){
  50. return fastpow(n,MOD-2)%MOD;
  51. }
  52.  
  53. ll ncr(ll n,ll r){
  54. if(n<r)return 0;
  55. return (fac[n]*modinv(fac[n-r])%MOD)*modinv(fac[r])%MOD;
  56. }
  57.  
  58. ll mul(const ll &a, const ll &b) {
  59. return (a % MOD + MOD) * (b % MOD + MOD) % MOD;
  60. }
  61.  
  62.  
  63.  
  64. void build(vector<int>&tree,string s,int v,int vl,int vr){
  65. if(vl==vr)tree[v]=(1<<(s[vl]-'a'));
  66. else{
  67. int m=(vl+vr)/2;
  68. build(tree,s,2*v,vl,m);
  69. build(tree,s,2*v+1,m+1,vr);
  70. tree[v]=(tree[2*v]|tree[2*v+1]);
  71. }
  72. }
  73. void update(vector<int>&tree,int v,int vl,int vr,int idx,char val){
  74. if(vl==vr)tree[v]=(1<<(val-'a'));
  75. else{
  76. int m=(vl+vr)/2;
  77. if(idx<=m) update(tree,2*v,vl,m,idx,val);
  78. else update(tree,2*v+1,m+1,vr,idx,val);
  79. tree[v]=(tree[2*v]|tree[2*v+1]);
  80. }
  81. }
  82.  
  83.  
  84. int get(vector<int>&tree,int v,int vl,int vr,int l,int r){
  85. if(l>r)return 0;
  86. if(vl==l&&vr==r)return tree[v];
  87. else {
  88. int m = (vl + vr) / 2;
  89. return (get(tree, 2 * v, vl, m, l, min(m, r))| get(tree, 2 * v + 1, m + 1, vr, max(l, m+1), r));
  90. }
  91. }
  92.  
  93.  
  94. const long double Pi = acos(-1);
  95.  
  96. signed main(){
  97. FAST
  98. //freopen("game.in","rt",stdin);
  99. //freopen("game.out","wt",stdout);
  100.  
  101. double r,s,h;
  102. cin>>r>>s>>h;
  103. double sz=Pi*2*r;
  104. double hh=sz/s;
  105. double d=hh/h;
  106. double rd= round(d);
  107. double mn=OO;
  108. double n1,n2,n3;
  109. for( double i=1;i<=1000;i++){
  110. for( double j=i*i;j<=1000;j+=i){
  111. for( double k=j+j;k<=1000;k+=j){
  112. double val=(1.0/i+1.0/k)-1.0/j;
  113. double tmp;
  114. if(rd-d>=0){
  115. tmp= abs(d-(rd-val));
  116. }
  117. else tmp= abs(d-(rd+val));
  118.  
  119. if(tmp+EPS<mn){
  120. mn=tmp;
  121. n1=i,n2=j,n3=k;
  122. }
  123. }
  124. }
  125. }
  126. cout<<n1<<' '<<n2<<' '<<n3<<'\n';
  127.  
  128.  
  129.  
  130. return 0;
  131. }
  132.  
  133.  
Success #stdin #stdout 0s 5296KB
stdin
Standard input is empty
stdout
4.64547e-310 4.94066e-324 9.88131e-324