Codeforces Round #195 (Div. 2)

记次CF吧 1题。。。B题。。因为循环的i没设成long long 却参与了运算 结果就悲剧了 一直交 一直挂 。。上题

A 水。。 第一次少了个空格还。。

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<stdlib.h>
 5 #include<algorithm>
 6 using namespace std;
 7 #define LL long long
 8 LL x,y;
 9 int main()
10 {
11     int i,j,k,n,m;
12     cin>>x>>y;
13     if((x<0&&y>0)||(x>0&&y<0))
14     {
15         LL b = y-x;
16         if(b<0)
17         cout<<"0"<<" "<<b<<" "<<-b<<" "<<"0"<<endl;
18         else
19         cout<<-b<<" "<<"0 "<<"0"<<" "<<b<<endl;
20     }
21     else
22     {
23         LL b = y+x;
24         if(b>0)
25         cout<<"0"<<" "<<b<<" "<<b<<" "<<"0"<<endl;
26         else
27         cout<<b<<" "<<"0"<<" "<<"0 "<<b<<endl;
28     }
29     return 0;
30 }
View Code

B题 大体画画 就出来了 求下和加加

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<cmath>
 7 using namespace std;
 8 #define eps 1e-6
 9 int main()
10 {
11     long long m,r,i;
12     cin>>m>>r;
13     double s =0,s1=0;
14     for(i = 1 ; i <= m ; i++)
15     {
16         s = 0;
17         if(i>2)
18         s+=(i-2)*(i-1)*r+(i-2.0)*sqrt(2.0)*2*r+sqrt(2.0)*r+2*r;
19         else
20         s+=(i-1)*i*r+(i-1)*sqrt(2.0)*r;
21         if(m-i>=2)
22         s+=(m-i-1)*(m-i)*r+(m-i-1)*sqrt(2.0)*2*r+2*r+sqrt(2.0)*r+2*r;
23         else
24         s+=(m-i)*(m-i+1)*r+(m-i)*sqrt(2.0)*r+2*r;
25         s1+=s/m;
26     }
27     printf("%.10f
",s1/m);
28     return 0;
29 }
View Code

往后就没再看 一直在交B 7次WA啊啊 泪~~

 补道C题

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #define N 100010
 7 #define LL long long
 8 using namespace std;
 9 struct node
10 {
11     LL a;
12     int d[50],k;
13 }q[N];
14 int f[50];
15 void digit(int e)
16 {
17     int g=0;
18     LL y = q[e].a;
19     while(y)
20     {
21         int x = y%2;
22         g++;
23         q[e].d[g] = x;
24         y/=2;
25     }
26     q[e].k = g;
27 }
28 bool cmp(node a,node b)
29 {
30     return a.a<b.a;
31 }
32 int main()
33 {
34     int i,j,k,n,o,g;
35     cin>>n;
36     for(i = 1; i <= n ;i++)
37     {
38         scanf("%d",&q[i].a);
39         digit(i);
40     }
41     sort(q+1,q+n+1,cmp);
42     o = 0;
43     for(i = 32; i >= 0 ; i--)
44     {
45         memset(f,0,sizeof(f));
46         for(j = n; j >= 1 ; j--)
47         {
48             if(q[j].k<i)
49             break;
50             if(q[j].d[i]!=0)
51             {
52                 for(g = 1; g < q[j].k ; g++)
53                 if(q[j].d[g]==0)
54                     f[g] = 1;
55             }
56         }
57         for(g = 1 ; g < i ; g++)
58             if(!f[g]) break;
59         if(g==i)
60         {
61             o = g;
62             break;
63         }
64     }
65     int num = 0;
66     for(i = n ; i >= 1 ; i--)
67     if(q[i].d[o]==1)
68     num++;
69     cout<<num<<endl;
70     int w=0;
71     for(i = n ; i >= 1 ; i--)
72     if(q[i].d[o]==1)
73     {
74         if(w)
75         printf(" ");
76         w++;
77         cout<<q[i].a;
78     }
79     return 0;
80 }
View Code

 补道D题

根据费马小定理神马的求逆元 然后高端的算组合数取模 

若第一个是1 则最后为0  若全是0且为偶数-》1 否则-》0 组合起来就可以求解了 

100。。。。

0100。。

0010。。

0001。。。

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 using namespace std;
 7 #define mod 1000000007
 8 #define LL long long
 9 LL ff[200010];
10 LL fmod(LL a,LL k)
11 {
12     LL b = 1;
13     while(k)
14     {
15         if(k&1)
16         b = a*b%mod;
17         a = (a%mod)*(a%mod)%mod;
18         k/=2;
19     }
20     return b;
21 }
22 LL cn(int n,int m)
23 {
24     LL ans,a;
25     ans = ff[n];
26     a = fmod((ff[n-m]*ff[m])%mod,mod-2);
27     return (ans*a)%mod;
28 }
29 int main()
30 {
31     int i,j,k,n,m,g;
32     while(cin>>n>>m>>g)
33     {
34         LL s1=0,s2=0;
35         if(n==0)
36         {
37             if(m==1&&g==1)
38             cout<<"1
";
39             else if(m>1&&g==1)
40             cout<<"0
";
41             else if(m==1&&g==0)
42             cout<<"0
";
43             else
44             cout<<"1
";
45             continue;
46         }
47         else if(m==0)
48         {
49             if(n%2==0)
50             k = 1;
51             else
52             k = 0;
53             if(k==g)
54             cout<<"1
";
55             else
56             cout<<"0
";
57             continue;
58         }
59         ff[0] = 1;
60         for(i = 1;i <= n+m;i ++)
61         {
62            ff[i] = (ff[i-1]*i)%mod;
63         }
64         s1 = cn(n+m,m);
65         for(i = 0 ;i <= n ; i+=2)
66         {
67             if(m+n-i-1>=m-1)
68             s2=(s2+cn(m+n-i-1,m-1))%mod;
69         }
70         if(m==1&&n%2!=0)
71         s2++;
72         if(m==1&&n%2==0)
73         s2--;
74         if(g==0)
75         cout<<s2<<endl;
76         else
77         {
78             if(s1-s2<0)
79             s1 = s1-s2+mod;
80             else
81             s1 = s1-s2;
82             cout<<s1<<endl;
83         }
84     }
85     return 0;
86 }
View Code
原文地址:https://www.cnblogs.com/shangyu/p/3249505.html