Codeforces Round #272 (Div. 2)

A. Dreamoon and Stairs

题意:给出n层楼梯,m,一次能够上1层或者2层楼梯,问在所有的上楼需要的步数中是否存在m的倍数

找出范围,即为最大步数为n(一次上一级),最小步数为n/2+n%2 在这个范围里找即可

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include <cmath>
 5 #include<algorithm>
 6 using namespace std;
 7
 8 typedef long long LL;
 9
10 int main()
11 {
12     int n, m,i,flag=0,mn,mx;
13     cin>>n>>m;
14     mx=n;
15     mn=n/2+n%2;
16
17     for(i=mn;i<=mx;i++){
18         if(i%m==0) {
19             flag=1;
20             printf("%d\n",i);
21             break;
22         }
23     }
24     if(!flag) printf("-1\n");
25 }

B. Dreamoon and WiFi

题意:给出两个字符串s1,s2 s1中只包含‘+‘,‘-‘(+代表加1,-代表-1) s2中包含‘+‘,‘-‘,‘?‘三种, 问s1,s2串得到相同的数值的概率

在s1中,令a[0]表示-,a[1]表示+

在s2中,令b[0]表示-,b[1]表示+,b[2]表示问号

分问号的个数为0和不为0来讨论

问号为0是:分别判断加号,减号的个数是否相等即可

问号不为0是,那么所差的加号为a[1]-b[1],即为从b[2]个位置中选出a[1]-a[0]个位置,再用这个除以总的方案数2^b[2]

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include <cmath>
 5 #include<algorithm>
 6 using namespace std;
 7
 8 typedef long long LL;
 9 char s1[15],s2[15],a[5],b[5];
10
11
12 LL C(int n,int m){
13     if(n<m||n<0||m<0) return 0;
14     if(m<n-m) m=n-m;
15     LL ans=1;
16     for(int i=m+1;i<=n;i++) ans*=i;
17     for(int i=1;i<=n-m;i++) ans/=i;
18     return ans;
19 }
20
21 int main()
22 {
23     int len1,len2,i,j,pos,pos1,tot,sum,sum1;
24     cin>>s1>>s2;
25     len1=strlen(s1);
26     len2=strlen(s2);
27
28 //    printf("c(2,3)=%d\n",C(2,3));
29
30     for(i=0;i<len1;i++){
31         if(s1[i]==‘+‘) a[1]++;
32         if(s1[i]==‘-‘) a[0]++;
33     }
34     for(i=0;i<len2;i++){
35         if(s2[i]==‘+‘) b[1]++;
36         else if(s2[i]==‘-‘) b[0]++;
37         else b[2]++;
38     }
39     if(b[2]==0){
40         if(a[0]==b[0]&&a[1]==b[1]) printf("1.000000000000\n");
41         else printf("0.000000000000\n");
42     }
43     else{
44         pos1=a[1]-b[1];
45         pos=b[2];
46         tot=1;
47         for(i=1;i<=pos;i++)
48         tot*=2;
49         double ans=(C(pos,pos1)*1.0)/tot;
50         printf("%.12lf\n",ans);
51     }
52     return 0;
53 }

C. Dreamoon and Sums

题意:给出a,b,找出符合以下条件的x,div(x,b)/mod(x,b)=k,其中k所在范围是[1,a],其中mod(x,b)!= 0.求满足这样的条件的x的和

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include <cmath>
 5 #include<algorithm>
 6 using namespace std;
 7
 8 typedef long long LL;
 9 LL mod=1000000007;
10
11 int main()
12 {
13     LL a,b;
14     cin>>a>>b;
15     LL ans1=(a*(a+1)/2%mod*b%mod+a)%mod;
16     LL ans2=b*(b-1)/2%mod;
17     LL ans3=ans1*ans2%mod;
18     cout<<ans3<<"\n";
19 }

c是= =翻译的题解----

时间: 2024-12-20 03:29:38

Codeforces Round #272 (Div. 2)的相关文章

Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi (超几何分布)

题目链接:Codeforces Round #273 (Div. 2) B. Dreamoon and WiFi 题意:"+"表示前进1个单位,"-"表示后退1个单位,问以0为起点经过S1,S2两个命令后达到的位置相同的概率. 思路:统计"+"和"-"的数量.如果S2中的"+"或者"-"比S1中的多,概率是0.其他条件下,形成的是超几何分布. AC代码: #include <std

Codeforces Round #272 (Div. 1) A. Dreamoon and Sums(数论)

题目链接 Dreamoon loves summing up something for no reason. One day he obtains two integers a and b occasionally. He wants to calculate the sum of all nice integers. Positive integer x is called nice if  and , where k is some integer number in range[1, a

Codeforces Round #272 (Div. 2) C. Dreamoon and Sums (数学 思维)

题目链接 这个题取模的时候挺坑的!!! 题意:div(x , b) / mod(x , b) = k( 1 <= k <= a).求x的和 分析: 我们知道mod(x % b)的取值范围为 1  - (b-1).那么我们可以从这一点入口来进行解题.. mod (x, b) = 1 时, x  =  b + 1, 2b + 1, 3b + 1..... a * b + 1. mod (x , b) = 2 时, x =  2b + 2, 4b + 2, 6b + 2, ..... 2a * b

Codeforces Round #272 (Div. 2)C. Dreamoon and Sums 数学推公式

C. Dreamoon and Sums Dreamoon loves summing up something for no reason. One day he obtains two integers a and b occasionally. He wants to calculate the sum of all nice integers. Positive integer x is called nice if  and , where k is some integer numb

Codeforces Round #272 (Div. 2) A

题目: A. Dreamoon and Stairs time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Dreamoon wants to climb up a stair of n steps. He can climb 1 or 2 steps at each move. Dreamoon wants the number o

Codeforces Round #272 (Div. 2) B

题目: B. Dreamoon and WiFi time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Dreamoon is standing at the position 0 on a number line. Drazil is sending a list of commands through Wi-Fi to Dream

Codeforces Round #272 (Div. 2) C

题目: C. Dreamoon and Sums time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input output standard output Dreamoon loves summing up something for no reason. One day he obtains two integers a and boccasionally. He wants

Codeforces Round #272 (Div. 2) D. Dreamoon and Sets (思维 数学 规律)

题目链接 题意: 1-m中,四个数凑成一组,满足任意2个数的gcd=k,求一个最小的m使得凑成n组解.并输出 分析: 直接粘一下两个很有意思的分析.. 分析1: 那我们就弄成每组数字都互质,然后全体乘以k不就行了么…… 然后看了看样例…… 这个该怎么说……我是觉得额这道题的output暴露了数据规律怎么破……我算是看出规律再证明的方式A的这道题 当时我看到22那个样例的时候……在想他干嘛要把22放这里……然后发现 2/4/6/10 14/16/18/22也是行的哇…… 化成乘以k之前的数据……

Codeforces Round #272 (Div. 2) ABCDE

A. Dreamoon and Stairs 题解: 首先写出尽可能2多的步数,然后判断能否%m,不能就加上最小的数使其能%m就行了 代码: #include<bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define se second #define fs first #define LL long long #define CLR(x) memset(x,0,sizeof x)