目录

A1. Counterexample

A2. Good Number

A3. Dice Tower

★A4. Alyona and Numbers

A5. Mountain Scenery

rzt A6. Help Vasilisa the Wise 2

A7. Chewbaсca and Number

★A8. Ksenia and Pan Scales

★A9. Launch of Collider

A10. Polo the Penguin and Segments

★A11. IQ Test

★A12. Yaroslav and Permutations

★A13. Snow Footprints

★A14. Raising Bacteria

★A15. BowWow and the Timetable

★A16. Balanced Rating Changes

rzt A17. Word Capitalization

rzt A18. Next Round

rzt A19. Young Physicist

rzt A20. Bit++

★A21. Case of the Zeros and Ones

rzt A22. Translation

★A23. String Task

rzt A24. Laptops

★A25. Left-handers, Right-handers and Ambidexters

rzt A26. George and Accommodation

A27. Vasya the Hipster

A28. Fox And Snake

rzt A29. The New Year: Meeting Friends

A30. Elephant

A31. Greg's Workout

rzt A32. Ultra-Fast Mathematician

★A33. Little Pony and Crystal Mine

A34. One-dimensional Japanese Crossword

rzt A35. Soldier and Bananas

A36. Bus to Udayland

A37. Cookies

A38. Second Order Statistics

rzt A39. Nearly Lucky Number

rzt A40. Playing with Dice

rzt A41. A Good Contest

A42. Beautiful Year

★A43. Far Relative’s Birthday Cake

★A44. Mashmokh and Lights

rzt A45. Triangular numbers

rzt A46. Roma and Lucky Numbers

★A47. Toy Army

A48. Levko and Table

★A49. Cards

A50. Wizards' Duel


A1. Counterexample

Problem - A - Codeforces

题意

求在 l 到 r 之间满足a,b的最大公约数等于 b ,c 的最大公约数等于 1 ,且 a,c的最大公约数不等于 1 的数 a,b ,c

三个for循环暴力查找+开long long

十年OI一场空,不开long long见祖宗

#include <iostream>
#define ll long long
using namespace std;ll gcd(ll a,ll b)
{return b? gcd(b,a%b):a;
}int main()
{ll l,r;cin>>l>>r;for(ll i=l;i<=r;i++)for(ll j=i;j<=r;j++)for(ll k=j;k<=r;k++)if(gcd(i,j)==1&&gcd(j,k)==1&&gcd(i,k)!=1){cout<<i<<' '<<j<<' '<<k;return 0;}cout<<-1;
}

A2. Good Number

Problem - A - Codeforces

题意

第一行输入n和k  n—n行数据

接下来n行输入n个数

如果该数的各个位数包含0~k的每个数 则该数为k-好数

求k-好数的个数

用标记法

#include <iostream>
#include <cmath>
using namespace std;int main()
{int n,k,x,sum=0,i;int index[9]={0};cin>>n>>k;while(n--){cin>>x;for(i=0;i<=k;i++) index[i]=0;while(x){index[x%10]=1;x/=10;}for(i=0;i<=k;i++)if(index[i]==0) break;if(i==k+1) sum++;}cout<<sum;
}

A3. Dice Tower

Problem - A - Codeforces

题意

第一行输入骰子数n

第二行输入第一个骰子的顶面

接下来n行输入骰子的正面 和侧面

注意叠起来的骰子塔相连的部分应该是一样的

判断给定数据是否能叠成一个合格的骰子塔

我们只需要一个一个骰子分析

给的正面和侧面是否合格 不合格输出NO 反之YES

然后每次循环更新一下顶面数据即可

#include <iostream>
using namespace std;int main()
{int n,top,a,b;cin>>n;cin>>top;while(n--){cin>>a>>b;if(a==b||a+b==7||a==top||b==top||a==7-top||b==7-top){cout<<"NO";return 0;}top=7-top;}cout<<"YES";return 0;
}

★A4. Alyona and Numbers

Problem - A - Codeforces

题意

给定两个数n, m(1 <= n,m <= 1000000)。分别从1~n, 1~m中选择两个数,使它们的和为5的倍数,求这样的数对共有多少(a+b, b+a视为不同的数对)。

暴力双for肯定不行的 会TLE(要不然也太简单了)

这题是数论题……啊烦人的数学

思路

想要两个数相加为 5 的倍数,那它们除5的余数相加必须等于 5

或者两者除5的余数都为0

本题要计算满足两数之和是5倍数的数对个数

那么就是先各找出n m范围内余数为0 1 2 3 4的个数 存数组里

然后根据排列组合的原理算出结果即可(因为题目说a+b和b+a算不同的数对)

#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long a[5],b[5];
int main()
{cin>>n>>m;for(int i=1;i<=n;i++) a[i%5]++;for(int i=1;i<=m;i++) b[i%5]++;cout<<a[0]*b[0]+a[1]*b[4]+a[2]*b[3]+a[3]*b[2]+a[4]*b[1]; //排列组合算出结果return 0;
}

A5. Mountain Scenery

Problem - A - Codeforces

题意

第一行给出n k

第二行给出序列

比如:  3  2

0 5 3 5 1 5 2

其中偶数位 - 1仍然满足大于前后两个数 题目要求其中有2个下标为偶数的数相比输入的序列被减了1 也就是可以是0 4 3 4 1 5 2

这题有sqj  所以跟样例不同很正常

#include <iostream>
using namespace std;int main()
{int n,k,a[201],i;cin>>n>>k;for(i=1;i<=2*n+1;i++) cin>>a[i];for(i=2;i<=2*n+1;i+=2){if(a[i]-1>a[i-1]&&a[i]-1>a[i+1]) k--,a[i]--;if(k==0) break;}for(i=1;i<=2*n+1;i++) cout<<a[i]<<' ';
}

rzt A6. Help Vasilisa the Wise 2

Problem - A - Codeforces

题意

有一个 2×2 的棋盘,有 9 个棋子,上面分别写着 1,2,3,…9。现在给出每行每列及每条对角线上两个棋子 的数之和,求相应的棋子摆放方法。无解输出 -1

暴力枚举即可   O(9^4)

#include <iostream>
using namespace std;int main()
{int r1,r2,c1,c2,d1,d2;cin>>r1>>r2>>c1>>c2>>d1>>d2;for(int i1=1;i1<=9;i1++)for(int i2=1;i2<=9;i2++)for(int i3=1;i3<=9;i3++)for(int i4=1;i4<=9;i4++)if(i1+i2==r1&&i3+i4==r2&&i1+i3==c1&&i2+i4==c2&&i1+i4==d1&&i2+i3==d2&&(i1!=i2)&&(i1!=i3)&&(i1!=i4)&&(i2!=i3)&&(i2!=i4)&&(i3!=i4)){cout<<i1<<' '<<i2<<endl<<i3<<' '<<i4;return 0;}cout<<-1;
}

A7. Chewbaсca and Number

Problem - A - Codeforces

题意

#include <iostream>
#include <cmath>
using namespace std;int main()
{string a;cin>>a;for(int i=0;i<a.size();i++)a[i]=min(a[i],char(9+'0'-a[i]+'0'));if(a[0]=='0') a[0]='9';cout<<a;
}

★A8. Ksenia and Pan Scales

Problem - A - Codeforces

题意

令人头大的一道题 烦死了呜呜

思路

先计算天平两侧的初始个数 l 和 r

根据下图思路划定中位线(找规律)

然后进行分配 如果左右个数不等 则输出impossible

否则输出结果就行

#include <iostream>
using namespace std;int main()
{string l,r,a,b;int flag=0,len=0,ren=0;cin>>a>>b;int lenb=b.size();for(int i=0;i<a.size();i++){if(a[i]!='|'&&!flag) l+=a[i],len++;if(flag) r+=a[i],ren++;if(a[i]=='|') flag=1;}int mid=(lenb-(len-ren))/2;  //mid为记录字符串b的中线for(int i=0;i<mid;i++) l+=b[i],len++;for(int i=mid;i<lenb;i++) r+=b[i],ren++;if(len!=ren){cout<<"Impossible";return 0;}cout<<l<<'|'<<r;
}

★A9. Launch of Collider

Problem - A - Codeforces

题意

找规律即可发现只有 RL这种情况才能碰撞(一个向右 一个向左)

所以只要找到RL这种组合 然后循环比较出最小时间即可

时间=后面-前面 / (v1+v2)

注意0x3f3f3f3f是最大数

#include <iostream>
#include <cmath>
using namespace std;int main()
{int n,res=0x3f3f3f3f;string d;cin>>n>>d;int a[n];for(int i=0;i<n;i++)cin>>a[i];for(int i=1;i<n;i++)if(d[i-1]=='R'&&d[i]=='L')res=min(res,(a[i]-a[i-1])/2);if(res==0x3f3f3f3f) cout<<-1;else cout<<res;
}

A10. Polo the Penguin and Segments

Problem - A - Codeforces

题意

这题根本不用管区间的l和r数是什么 只要管该区间所包含的整数数量

用sum把整数数量和求出 因为只能将区间扩展 意思是只能sum++

也就是求sum%k==0 时 sum++的次数


#include <iostream>
using namespace std;int main()
{int n,k,l,r,sum=0,cnt=0;cin>>n>>k;while(n--){cin>>l>>r;sum+=r-l+1;}while(sum%k!=0){sum++;cnt++;}cout<<cnt;
}

★A11. IQ Test

Problem - A - Codeforces

题意

这题究极找规律 看了下面这篇题解 看完我顿悟了(没有)

但其实理解错了 我第一次以为是统计4×4的表格 但其实是统计2×2的表格

大佬的思路太强了 这方法的代码又简短又易懂 找规律yyds

#include <iostream>
using namespace std;int q(char ch)
{return ch=='.'? -1:1;
}int main()
{char a[4][4];int i,j,flag=0;for(i=0;i<4;i++)for(j=0;j<4;j++)cin>>a[i][j];for(i=0;i<3;i++)for(j=0;j<3;j++) //或运算 如果出现1 flag就为1flag|=q(a[i][j])+q(a[i+1][j])+q(a[i][j+1])+q(a[i+1][j+1]);if(!flag) cout<<"NO";//如果循环完flag都是0 则说明没有符合题意的2×2方格else cout<<"YES";
}

★A12. Yaroslav and Permutations

Problem - A - Codeforces

题意

有一个数组,现在你要在有限的次数内移动相邻的两个数,最后是否能使数组中没有数字相同的相邻元素。

思路

想要元素不相邻,即同一个元素要间隔放,已知相同一个元素最多可以这样

k a k b k c k    n=7  k出现4次

即最多可以出现(n+1)/ 2次,只要k出现的次数小于该最大次数,就能实现间隔排放

其中k为该数组中出现次数最大的数

#include <iostream>
using namespace std;int main()
{int n,x,maxn=0,index[1001]={0};cin>>n;for(int i=1;i<=n;i++){cin>>x;index[x]++;if(maxn<index[x]) maxn=index[x];}if(maxn<=(n+1)/2) cout<<"YES";else cout<<"NO";
}

★A13. Snow Footprints

Problem - A - Codeforces

题意

这题1300  而且是spj题 有1000种解法

思路

三种情况:只有L  只有R  和RRLL这种    至于LLRR这种模拟一下就知道不可能

#include <iostream>
using namespace std;int main()
{int n;string s;cin>>n>>s;int lst=-1,led=-1,rst=-1,red=-1;for(int i=0;i<n;i++){if(s[i]=='R') red=i;if(s[i]=='L') led=i;if(rst==-1&&s[i]=='R') rst=i;if(lst==-1&&s[i]=='L') lst=i;}if(lst==-1) cout<<rst+1<<' '<<red+2;else if(rst==-1) cout<<led+1<<' '<<lst;else cout<<rst+1<<' '<<red+1;  //+1是因为数组从0开始的 (字符串)
}

★A14. Raising Bacteria

Problem - A - Codeforces

题意

每个细菌每天分裂成2个新细菌可以得到,要看到x个细菌就是求x里面有多少个2^n,2^n-1……2^0 由二进制的定义可得,这个题目就是求x在二进制下有多少个1

#include <iostream>
#include <cmath>
using namespace std;int main()
{int n,cnt=0;cin>>n;while(n){if(n%2==1) cnt++;n/=2;}cout<<cnt;
}

★A15. BowWow and the Timetable

Problem - A - Codeforces

题意

我的思路是先把二进制转十进制 然后再在十进制数里找有多少个4的次方 cnt计数

但是卡第四个test 看了一下发现是精度问题(kao)

错误代码:

#include <iostream>
#include <cmath>
using namespace std;signed main()
{long long int n,sum=0,t=0,i=0,cnt=0;cin>>n;while(n){sum+=n%10*pow(2,i++);n/=10;}i=0;while(t<sum){t=pow(4,i++);if(t>=sum) break;cnt++;}cout<<cnt;
}

AC代码:

#include <iostream>
using namespace std;int main()
{int cnt=0;string s,p="1";cin>>s;while(s.size()>=p.size()){if(s>p) cnt++;p+="00";}cout<<cnt;
}

★A16. Balanced Rating Changes

Problem - A - Codeforces

题意

由题可知

  • ai为偶数 则bi=ai / 2
  • ai为奇数 因为题目保证最后和为0 说明ai为奇数的个数肯定为偶数个(因为奇数+奇数=奇数)那么只要一半人向上取整 另外一半向下取整
#include <iostream>
using namespace std;int main()
{int n,x,flag=1;cin>>n;while(n--){cin>>x;if(x%2) cout<<(x+flag)/2<<endl,flag*=-1;else cout<<x/2<<endl;}
}

rzt A17. Word Capitalization

Problem - A - Codeforces

题意

将首字母大写

#include<bits/stdc++.h>
using namespace std;int main()
{string s;cin>>s;if(s[0]>='a'&&s[0]<='z') s[0]-=32;cout<<s;
}

rzt A18. Next Round

Problem - A - Codeforces

题意

第一行分别输入 n k

n代表参赛人数 k代表排名前k位的都能晋级(和第k位并列的也可以)

问有多少人能晋级

其中0分的不算在晋级里边

#include<bits/stdc++.h>
using namespace std;bool cmp(int a,int b)
{return a>b;
}int main()
{int n,k,cnt=0,s=0;cin>>n>>k;int a[n];for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++)if(a[i]>=a[k]&&a[i]!=0) cnt++;cout<<cnt;
}

rzt A19. Young Physicist

Problem - A - Codeforces

题意

坐标矢量和为0 输出YES 否则输出NO

#include<bits/stdc++.h>
using namespace std;typedef struct
{int x,y,z;
}sp;int main()
{int n,xz=0,yz=0,zz=0;cin>>n;sp p[101];for(int i=0;i<n;i++){cin>>p[i].x>>p[i].y>>p[i].z;xz+=p[i].x;yz+=p[i].y;zz+=p[i].z;}if(xz==0&&yz==0&&zz==0) cout<<"YES";else cout<<"NO";
}

rzt A20. Bit++

Problem - A - Codeforces

题意

输入n

接下来n行输入字符串

x++和++x表示+1   x--和--x表示-1

输出结果 其中起始sum=0

#include<bits/stdc++.h>
using namespace std;int main()
{string s;int n,sum=0;cin>>n;while(n--){cin>>s;if(s[1]=='+') sum++;else sum--;}cout<<sum;
}

★A21. Case of the Zeros and Ones

Problem - A - Codeforces

题意

第一行输入n 表示字符串的长度

如果有1和0相连就删掉 问最后剩下几个字符

比如1100——10——空

再比如110010——1010——10——空

11110001——111001——1101——11——2个

因为10总是连在一块删掉的 所以只要配对的删掉 就是剩下的

所以要做的就是1和0配对 比如110010 ——3个1  3个0则都配对成功 所以剩下0个字符

#include<bits/stdc++.h>
using namespace std;int main()
{string s;int n,a=0,b=0;cin>>n>>s;for(int i=0;i<n;i++)if(s[i]=='1') a++;else b++;cout<<fabs(a-b);
}

rzt A22. Translation

Problem - A - Codeforces

题意

字符串翻转就是对的 输出YES

其他情况都是 NO  这题用reverse函数就是秒解

#include<bits/stdc++.h>
using namespace std;int main()
{string s,t;cin>>s>>t;reverse(s.begin(),s.end());if(s==t) cout<<"YES";else cout<<"NO";
}

★A23. String Task

Problem - A - Codeforces

题意

根据规则改字符串并输出

  • 把大写都改成小写
  • 遇到元音字母删除(a e i o u y)
  • 遇到辅音字母前加.字符

我刚开始想的是字符数组 太麻烦了 要加要减的操作都很麻烦

这题教会我一个方法就是——一边改变一边输出

遇到元音字母就跳过不管  遇到辅音字母就cout<<'.'<<s[i]

#include<bits/stdc++.h>
using namespace std;int main()
{string s;cin>>s;for(int i=0;i<s.size();i++){if(s[i]>='A'&&s[i]<='Z') s[i]+=32;if(s[i]!='a'&&s[i]!='e'&&s[i]!='i'&&s[i]!='o'&&s[i]!='u'&&s[i]!='y')cout<<'.'<<s[i];}
}

rzt A24. Laptops

Problem - A - Codeforces

题意

第一行输入n 代表n台电脑

题目说只要出现一台电脑质量比价格高 就输出“Happy Alex”

#include<bits/stdc++.h>
using namespace std;int main()
{int n,x,y,flag=1;cin>>n;while(n--){cin>>x>>y;if(x<y) flag=0;}if(flag)cout<<"Poor Alex";else cout<<"Happy Alex";
}

★A25. Left-handers, Right-handers and Ambidexters

Problem - A - Codeforces

题意

l代表有l个人只能用左手  r代表有r个人只能用右手  a代表有a个人既能用左手也能用右手

输出一个整数,代表这个队伍里最多有多少人,如果组不成这样的队伍,则输出0

思路

比如 6 2 7 先把右手不足的给他补上 变成6 6 3  然后再平均分配 7 7 1

此时这个1给谁都无所谓了因为结果就是 l 和 r 中最小的数×2

靠 刚开始写的呢代码简直就是if开会 下面这个代码跟第一次写的比起来简直通俗易懂

#include<bits/stdc++.h>
using namespace std;int main()
{int l,r,a;cin>>l>>r>>a;while(a){if(l>=r) r++;else l++;a--;}cout<<min(l,r)*2;
}

rzt A26. George and Accommodation

Problem - A - Codeforces

题意

太弱智了 我都不想写题意哈哈

n代表房间数 接下来n行输入p——已住人数 q——房间容量

问有几间房能再塞下两个人

#include<bits/stdc++.h>
using namespace std;int main()
{int n,p,q,cnt=0;cin>>n;while(n--){cin>>p>>q;if(q-p>=2) cnt++;}cout<<cnt;
}

A27. Vasya the Hipster

Problem - A - Codeforces

题意

输入a代表红袜子个数 输入b代表蓝袜子个数

输出能有几天混穿 有几天能穿一双纯色

所以能混穿的天数就是a b小的值

剩下的除2就是穿纯色的天数

#include<bits/stdc++.h>
using namespace std;int main()
{int a,b,minx,maxn;cin>>a>>b;maxn=max(a,b);minx=min(a,b);cout<<minx<<' '<<(maxn-minx)/2;
}

A28. Fox And Snake

Problem - A - Codeforces

题意

矩阵的控制 画蛇 调试就完事了

#include<bits/stdc++.h>
using namespace std;int main()
{int m,n,flag=-1;cin>>m>>n;for(int i=1;i<=m;i++){if(i%2==0) flag=-flag;for(int j=1;j<=n;j++){if(i%2!=0) cout<<'#';else if(flag==1&&j==n)cout<<'#';else if(flag==-1&&j==1) cout<<'#';else cout<<'.';}cout<<endl;}
}

rzt A29. The New Year: Meeting Friends

Problem - A - Codeforces

题意

给三个数 在中间那个数汇合 问最大到中间和最小到中间的距离之和 其实就是最大-最小

#include<bits/stdc++.h>
using namespace std;int main()
{int a[3];for(int i=0;i<3;i++)cin>>a[i];sort(a,a+3);cout<<a[2]-a[0];
}

A30. Elephant

Problem - A - Codeforces

题意

输入一个n 有1 2 3 4 5可以凑这个数 问如何用最少的个数凑n

要想有最少的个数 那就用最大的5去凑 通过规律推出三种情况

#include<bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;if(n<=5) cout<<1;else if(n%5!=0) cout<<n/5+1;else cout<<n/5;
}

A31. Greg's Workout

Problem - A - Codeforces

题意

思路没啥问题 一直卡的点是因为数组开小了 我下标从1开始的 所以应该开a[n+1]

#include<bits/stdc++.h>
using namespace std;int main()
{int n,cnt=0,s1=0,s2=0,s3=0;cin>>n;int a[n+1];for(int i=1;i<=n;i++){cin>>a[i];cnt++;if(cnt==1) s1+=a[i];else if(cnt==2) s2+=a[i];else {s3+=a[i];cnt=0;}}int maxn=max(max(s1,s2),s3);if(maxn==s1) cout<<"chest";else if(maxn==s2) cout<<"biceps";else cout<<"back";
}

rzt A32. Ultra-Fast Mathematician

Problem - A - Codeforces

题意

给你两长度相同的字符串 要求做异或运算 其中1+1=0 1+0=1 0+0=0

#include<bits/stdc++.h>
using namespace std;int main()
{string s1,s2;cin>>s1>>s2;for(int i=0;i<s1.size();i++){if(s1[i]-'0'+s2[i]-'0'==1) cout<<1;else if(s1[i]-'0'+s2[i]-'0'==0) cout<<0;else cout<<0;}
}

★A33. Little Pony and Crystal Mine

Problem - A - Codeforces

题意

打印题 让我想起天梯赛的打印沙漏 真是可怕

#include<bits/stdc++.h>
using namespace std;int main()
{int n,t=1,i,j;cin>>n;for(i=1;i<=n/2+1;i++){for(j=1;j<=(n-t)/2;j++) cout<<'*';for(j=1;j<=t;j++) cout<<'D';for(j=1;j<=(n-t)/2;j++) cout<<'*';t+=2;cout<<endl;}t-=4;for(i=1;i<=n/2;i++){for(j=1;j<=(n-t)/2;j++) cout<<'*';for(j=1;j<=t;j++) cout<<'D';for(j=1;j<=(n-t)/2;j++) cout<<'*';t-=2;cout<<endl;}
}

A34. One-dimensional Japanese Crossword

Problem - A - Codeforces

题意

例如BWBBBWWBW 有三组B 这三组B的个数分别是1 3 1

所以输出就是

3

1 3 1

思路就是找子串 其他的也没啥难度

#include<bits/stdc++.h>
#define int long long
using namespace std;signed main()
{int n,cnt=0,sum=0,k=0;string s;cin>>n;cin>>s;int a[n];for(int i=0;i<n;i++)if(s[i]=='B'){sum++;if(s[i+1]=='W'||s[i+1]=='\0') cnt++,a[k++]=sum,sum=0;}cout<<cnt<<endl;for(int i=0;i<cnt;i++)cout<<a[i]<<' ';
}

rzt A35. Soldier and Bananas

Problem - A - Codeforces

题意

#include<bits/stdc++.h>
using namespace std;int main()
{int k,n,w,sum=0;cin>>k>>n>>w;for(int i=1;i<=w;i++)sum+=k*i;if(sum>n) cout<<sum-n;else cout<<0;
}

A36. Bus to Udayland

https://codeforces.com/contest/711/problem/A

题意

有n排座位,每排座位包含左右两部分,被 |分隔,其中O代表没人坐,X代表有人坐。 问你是否存在连续的两个座位没人坐,存在输出YES,并把这两个座位改为++。 输出修改以后的情况,不存在输出NO

#include <iostream>
using namespace std;int main()
{int n,i,j,flag=0;char s[1010][8];cin>>n;for(i=0;i<n;i++)for(j=0;j<5;j++){cin>>s[i][j];if(s[i][0]=='O'&&s[i][1]=='O'&&flag!=1){flag=1;s[i][0]='+',s[i][1]='+';}else if(s[i][3]=='O'&&s[i][4]=='O'&&flag!=1){flag=1;s[i][3]='+',s[i][4]='+';}}if(!flag) cout<<"NO";else{cout<<"YES"<<endl;for(i=0;i<n;i++){for(j=0;j<5;j++)cout<<s[i][j];cout<<endl;}}
}

A37. Cookies

https://codeforces.com/contest/129/problem/A

题意

有n袋饼干(1≤n≤100),每袋里有1≤ai​≤100块饼干。拿走一袋饼干,使剩下的饼干数为偶数。求有多少种拿走的方案。

思路

只要存在奇数个奇数 则需要拿走奇数的饼干

偶数个奇数和为偶数 那么拿走偶数的饼干即可

#include <iostream>
using namespace std;int main()
{int n,x,even=0,odd=0;cin>>n;for(int i=0;i<n;i++){cin>>x;if(x%2==0) even++;else odd++;}if(odd%2==0) cout<<even;else cout<<odd;
}

A38. Second Order Statistics

https://codeforces.com/contest/22/problem/A

题意

给定一个数组,输出其中第二小的整数(相等的整数只计算一次)

用set很好做 只要把第一个删掉 再用s.begin()就行

#include <iostream>
#include <set>
using namespace std;int main()
{set<int>s;int n,x;cin>>n;int t=n;while(n--){cin>>x;s.insert(x);}if(t<2||s.size()==1){cout<<"NO";return 0;}s.erase(s.begin());cout<<*s.begin();
}

rzt A39. Nearly Lucky Number

https://codeforces.com/contest/110/problem/A

题意

如果一个数仅包含4和7,那么它就是一个"幸运数字"。 如果一个数本身不是幸运数,但是它所含有的数字4和7的个数之和为一个"幸运数字",那么它就是一个"类幸运数字"。 给您一个数,请编程判断它是不是"类幸运数字"。

#include <iostream>
using namespace std;int main()
{string s;int cnt=0;cin>>s;for(int i=0;i<s.size();i++){if(s[i]=='4'||s[i]=='7') cnt++;}if(cnt!=0&&(cnt==4||cnt==7)) cout<<"YES";else cout<<"NO";
}

rzt A40. Playing with Dice

https://codeforces.com/contest/378/problem/A

题意

两个人正在玩游戏。每人写一个 1~6 之间的数,然后掷骰子。写下的数字和骰子上的数最接近的那个人获胜。如果两个人写的数和骰子上的数差距都是一样的,那么是平局。

第一个人写的数是 a,第二个人写的数是 b。 请分别输出第一个人赢、平局、第二个人赢有多少种可能(方法数)。

#include <iostream>
#include <cmath>
using namespace std;int main()
{int a,b,aw=0,bw=0,dr=0;cin>>a>>b;for(int i=1;i<=6;i++){if(abs(a-i)<abs(b-i)) aw++;else if(abs(a-i)==abs(b-i)) dr++;else bw++;}cout<<aw<<' '<<dr<<' '<<bw;
}

rzt A41. A Good Contest

https://codeforces.com/contest/681/problem/A

题意

如果出现比赛之前即为红色等级(分>=2400)且分数有长进的 输出YES

#include <iostream>
using namespace std;typedef struct
{string s;int a;int b;
}stu;int main()
{stu p[101];int n,flag=0;cin>>n;for(int i=0;i<n;i++){cin>>p[i].s>>p[i].a>>p[i].b;if(p[i].a>=2400&&p[i].b-p[i].a>0)flag=1;}if(flag) cout<<"YES";else cout<<"NO";
}

A42. Beautiful Year

https://codeforces.com/contest/271/problem/A

题意

给定一个年份n,输出大于n的第一个四位数字都不相同的年份。

这题是天梯赛L1 出生年的降级版哈哈

#include <iostream>
using namespace std;int main()
{int y,a[4];cin>>y;while(1){y++;a[0]=y/1000;a[1]=y/100%10;a[2]=y/10%10;a[3]=y%10;if(a[0]!=a[1]&&a[0]!=a[2]&&a[0]!=a[3]&&a[1]!=a[2]&&a[1]!=a[3]&&a[2]!=a[3])break;}cout<<y;
}

★A43. Far Relative’s Birthday Cake

https://codeforces.com/contest/629/problem/A

题意

输入格式:

第一行输入一个整数n(1<=n<=100),表示蛋糕边的长度。然后输入n行数,每行有n个字符。空的细胞用'.'表示,而含有巧克力的细胞用“C”表示。

输出格式:

输出“家庭之门”幸福感的价值,即同一行或同一列的一对巧克力片的数量

思路

注意:像C C C这种序列 一对巧克力的数量应该是3对  (1,2)(1,3)(2,3)

所以也就是高斯求和公式n*(n-1)/2

其实找规律也可以得出:3个C=2+1   4个C=3+2+1   5个C=4+3+2+1

则用一个双for 同时记录每一行每一列C的个数 然后用高斯求和公式计算求和即可

#include <iostream>
using namespace std;int main()
{int n,i,j,h,l,sum=0;char s[101][101];cin>>n;for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>s[i][j];for(i=0;i<n;i++){h=0,l=0;for(j=0;j<n;j++){if(s[i][j]=='C') l++; //代表每列的C的个数if(s[j][i]=='C') h++; //代表每行的C的个数}sum+=(l-1)*l/2+(h-1)*h/2;}cout<<sum;}

★A44. Mashmokh and Lights

https://codeforces.com/contest/415/problem/A

题意

有编号为1 - n共n个灯。按下i号开关后,所有编号≥i的灯都会被关掉。给出n, m两个数,分别表示灯的数量和按下的开关数,输出每个灯被第一次关掉时开关的编号。

#include <iostream>
using namespace std;int main()
{int n,m,x;cin>>n>>m;int a[101]={0};while(m--){cin>>x;for(int i=x;i<=n;i++)if(a[i]==0) a[i]=x;}for(int i=1;i<=n;i++)cout<<a[i]<<' ';
}

rzt A45. Triangular numbers

#include <iostream>
using namespace std;int main()
{int n,i;cin>>n;for(i=1;i<32;i++)if(i*(i+1)/2==n){cout<<"YES";return 0;}cout<<"NO";
}

rzt A46. Roma and Lucky Numbers

https://codeforces.com/contest/262/problem/A?f0a28=1

题意

刚开始没看清题 意思是4和7是幸运数字

n指给出n个数 问有几个数满足幸运数字出现次数<=k

输出满足条件的个数

#include <iostream>
using namespace std;int main()
{int n,k,sum=0;string s;cin>>n>>k;while(n--){int cnt=0;cin>>s;for(int i=0;i<s.size();i++)if(s[i]=='4'||s[i]=='7') cnt++;if(cnt<=k) sum++;}cout<<sum;
}

★A47. Toy Army

https://codeforces.com/contest/84/problem/A

题意

这题说实话 没看懂题是啥意思……待补

#include<iostream>
using namespace std;
long long n;int main()
{cin>>n;cout<<n/2*3;
}

A48. Levko and Table

https://codeforces.com/contest/361/problem/A

题意

Levko 很喜欢幻方,他想构造一个长宽都是 n 且每行每列的和都是 k 的幻方

spj题  要满足每行每列和都为k 最简单的方法就是对角线是k

#include <iostream>
using namespace std;int main()
{int n,k,a[101][101];cin>>n>>k;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(i==j) a[i][j]=k;else a[i][j]=0;cout<<a[i][j]<<' ';}cout<<endl;}
}

★A49. Cards

https://codeforces.com/contest/701/problem/A

题意

现在有n张卡牌(n为偶数),每张卡牌上都写着一个正整数。有n/2个人要玩这个卡牌游戏,在游戏开始时每个人会得到两张卡牌,每张卡牌只能给一个玩家。 现在让你发卡牌,使每一个人手上的卡片上所写的数字的总和相等。数据保证有发牌的方案符合题目要求。

思路

因为题目保证肯定能凑 所以直接sort排序

然后两头取就ok了  注意用结构体记录原序列的下标

毕竟答案要求输出的是原序列的下标

#include <iostream>
#include <algorithm>
using namespace std;typedef struct
{int idx,val;
}st;bool cmp(st a,st b)
{return a.val<b.val;
}int main()
{st a[101];int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].val;a[i].idx=i;}sort(a+1,a+n+1,cmp);for(int i=1;i<=n/2;i++)cout<<a[i].idx<<' '<<a[n+1-i].idx<<endl;
}

A50. Wizards' Duel

https://codeforces.com/contest/591/problem/A

题意

第一行输入一个整数 l (1<=l<=1000 )-----走廊长度

第二行输入正整数 p ,第三行输入正整数 q -----分别代表哈利波特与伏地魔施展的魔法的飞行速度。

输出一个正数-----从哈利波特的位置到两个咒语第二次碰撞位置的距离。

思路

画个图发现其实第二次碰撞就是第一次碰撞的位置

所以用时间t=l/(a+b) 乘以哈利的魔法速度a即可

#include <iostream>
#include <stdio.h>
using namespace std;int main()
{double l,a,b;cin>>l;cin>>a;cin>>b;printf("%f",l/(a+b)*a);
}

【Codeforces】A2组刷题记录(50 / 50)完结相关推荐

  1. 【Codeforces】A3组刷题记录( 43 / 43 )

    目录 A1. Combination Lock A2. Summer Camp rzt A3. Soft Drinking ★A4. Coder ★A5. GukiZ and Contest ★A6. ...

  2. [USACO] Gold组刷题记录

    题目取自BZOJ,为了查找方便,Gold组将收录进同一篇博客 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 二分答案(长度)+ Hash 记录出现次数 1 #inc ...

  3. Codeforces 刷题记录(已停更)

    Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...

  4. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

  5. 【Python爬虫实战】codeforces刷题记录小助手

    先看效果图. 输入codeforces的用户名,可以查询用户的rating信息.以及参加比赛的信息(大星参数的不计算在内).还有总的AC数. 一.需求分析 找到显示用户参加contest信息的url. ...

  6. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  7. Pythontip刷题记录

    pythontip 刷题记录 11.给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数.(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大). 不能直接相乘会太大了,分解质因数,去找2 ...

  8. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  9. 2024届毕业生的刷题记录

    2024届毕业生的刷题记录 LeetCode 热题 HOT 100 两数之和 两数相加 无重复字符的最长子串 寻找两个正序数组的中位数 最长回文子串 N字形变换 整数反转 字符串转换整数 回文数 正则 ...

最新文章

  1. R构建Kmeans聚类模型
  2. 【Java每日一题】20161128
  3. .Net 下载网络图片
  4. pta c语言 凯撒密码
  5. 【基本算法--高精度计算】大整数相加
  6. 软件运行 计算机硬件环境,软件运行环境该怎么写
  7. 箱线图画法详解:颜色、标签、大小等
  8. 吐血推荐:无解的完成图
  9. 大O记法-BigO notation
  10. 国产AIoT SoC芯片
  11. OpenCV学习笔记03:缩放裁剪图像与调整图像色调
  12. pyqt5 图像上划线_PyQt5 绘制画 线(鼠标笔)
  13. js、jquery操作复选框checkbox总结(单个/多个获取选中值、初始化设置默认选中值、全选反选)
  14. 齐供应TAPPI四碘化5,10,15,20-四(对-N,N,N三甲基苯胺基)卟啉敏化的钛酸盐纳米管(TAPPI-TNTs)高效的可见光催化剂岳
  15. win10,win11后在cmd命令行输入python自动调用微软应用商店
  16. servlet cannot be resolved to a type的原因及解决方法
  17. 【译文】工作六年后,我对软件开发的认知转变
  18. java集成paypal支付,含Android,服务端代码
  19. 浅谈常见的七种加密算法及实现
  20. laravel开源php棋牌,Simpla: Simpla 是基于 Laravel 的 PHP 框架进行开发的一款开源免费的内容管理系统(CMS)...

热门文章

  1. 【设计模式C++】工厂模式
  2. 95后阿里P7晒出工资单:狠补了这个,真香...
  3. 微信分享功能android,关于Android实现简单的微信朋友圈分享功能
  4. 用java 发送邮件 版本2(根据配置文件 选择发送情话或者励志文)
  5. matlab级联算法,IIR滤波器的MATLAB实现(级联型)
  6. discuz帖子列表页调用帖子作者头像
  7. 分数乘法计算机题,【六年级分数乘法计算练习题】
  8. 何金龙 mysql_办innodb
  9. Vue、VueCLI(脚手架)安装、使用详细步骤
  10. python json文件操作_JSON文件及Python对JSON文件的读写操作