您的位置:首页 > 其它

SDUT1128 Autumn Single contest

2017-11-29 15:57 459 查看
CodeForces 140A New Year Table

这道题做过,标准原题。记得当时比赛就卡了没做出来是之后补的, 所以就继续找题看。

不知道当时写没写题解, 一块写了吧。

题意: R是大圆的半径, r是小圆的半径, n是想往大圆里放小圆的个数。 小圆必须贴边放, 即能直接接触到大圆。

sinΘ = r / (R-r);

Θ = arcsin(r / (R-r));

可放个数 = (2*π)/(2*Θ)

题意很简单,做法很简单,EPS很无奈。。。

比赛中尝试了1e-24 -23 -19 -15 -13and so on

WA了九发。。。 EPS太精确也会错。。

以后要EPS一般还是用1e-9吧

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#define inf 0x3f3f3f3f
#define ms(x) memset(x, 0, sizeof(x))
#define ll long long
using namespace std;
const int N = 101234;
long double pi = 3.1415926535;
const long double eps = 1e-9;
int main()
{
int n;
double R, r;
scanf("%d%lf%lf",&n,&R,&r);
long double dt = asin(r/(R-r));
double tm = pi/dt;
//    printf("%lf\n",tm);
if(r>R) printf("NO\n");
else if(n==1&&R>=r) printf("YES\n");
else if(n==2&&R==2*r) printf("YES\n");
else if(pi/dt >= n - eps)
{
printf("YES\n");
}
else printf("NO\n");
return 0;
}


CodeForces 150A Win or Freeze

听不懂雨,看不透云,等不及风,读错了题。

还以为是如果有且两个不同因子才会输出2,

但其实只要总共的因子个数为两个就会输出2.

总共的因子个数只要大于2就输出1.

题意:1和2 两个人。 一个数为q, 轮到这个人时,写出一个q的因子

然后将该值更新为q。直到这个人写不出时这个人获胜。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ms(x) memset(x,0,sizeof(x))
#define ll long long
using namespace std;
int main()
{
ll q;
vector<ll>v;
cin>>q;
if(q == 1)
{
cout<<"1"<<endl;
cout<<"0"<<endl;return 0;
}
ll tmp = q;
for(ll i=2; i<=sqrt(q); i++)
{
while(tmp%i==0)
{
tmp/=i;
v.push_back(i);
if(v.size()>2) break;
}
if(v.size()>2) break;
}
int ans = v.size();
if(tmp>1)
{
ans++;
}
if(ans == 1)
{
cout<<"1"<<endl;
cout<<"0"<<endl;
}
else if(ans == 2)
{
cout<<"2"<<endl;
}
else
{
cout<<"1"<<endl;
cout<<v[0]*v[1]<<endl;
}
return 0;
}


CodeForces 77B Falling Anvils

比赛时倒是就看懂这道题了,不过没想到怎么做。

刚才以搜数学题的方式搜了下才想起来这种二元不等式画个二维的图最好想。。。我说画一维的怎么都想不出来答案。。。

求 p>= 4*q 的概率

p∈[0, a] q∈[-b, b]

画个图用面积求概率就好。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#define inf 0x3f3f3f3f
#define ms(x) memset(x,0,sizeof(x))
#define ll long long
using namespace std;
int main()
{
int T;
double a, b;
cin>>T;
while(T--)
{
double t;
cin>>a>>b;
if(b == 0)
{
t = 1;
}
else if(a<4*b)
{
t = 0.5 + a/(16*b);
}
else
{
t = (a-b)/a;
}
printf("%.10lf\n",t);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: