行业知识
【第15届蓝桥杯C/C++B组】试题&参赛经历&经验&个人题解
2026-11-09 20:57:43
来源:互联网转载
文章目录
- 试题 A: 握手问题
- 试题 B: 小球反弹
- 试题 C: 好数
- 试题 D:R 格式
- 试题 E:宝石组合
- 试题F:数字接龙
- 试题G:爬山
- 试题H:拔河
- 我的感想
试题 A: 握手问题
分 试题 A: 握手问题 本题总分:5 分 问题描述 小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。
在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这 7 人与除这 7 人以外的所有人进行了握手)。
请问这些人之间一共进行了多少次握手?注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。 我的答案
#include#includeusing namespace std;int Solution(){int ans=0;for(int i=49;i>=7;--i){ans+=i;coutcoutlong double length=343720.0,width=233333.0;long double dx=15.0,dy=17.0;long double step=411764.1176470588;//411764int t=0;long double dist=0;while(true){t++;dist+=step;while(distlength+3){dist-=length;}if(abs(dist-length)coutint n;cinn;int ans=0;for(int i=1;iint dont=0;int t=i;bool add=true;while(t0){int wei=t%10;wei%=2;if(wei==dont){add=false;break;}dont=wei;t/=10;}if(add)ans++;}return ans;}int main(){cout const int MOD = 1e9 + 7; // 初始化 dp 数组 vector dp[1][j] = 1; } // 动态规划计算好数的数量 for (int i = 2; i for (int j = 1; j if (i % 2 == 1) { // 当前位数为奇数位 // 前一位是偶数位的好数数量 for (int k = 0; k dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MOD; } } else { // 当前位数为偶数位 // 前一位是奇数位的好数数量 for (int k = 1; k dp[i][j] = (dp[i][j] + dp[i - 1][k]) % MOD; } } } } // 计算好数的总数量 long long ans = 0; for (int i = 1; i for (int j = 1; j ans = (ans + dp[i][j]) % MOD; } } return ans;}int main() { int N; cin N; cout int n;long double d;cinnd;long double val=pow(2,n);long long result=d*val+0.5f;coutSolution();return 0;}if(!b)return a;return gcd(b,a%b);}int lcm(int a,int b){return a/gcd(a,b)*b;}void Solution(){int n;cinn;vectorfor(int j=0;jif(j!=i){for(int k=0;kif(k!=j&&k!=i){int q,w,e,r;q=lcm(g[i],g[j]);w=lcm(g[i],g[k]);e=lcm(g[j],g[k]);r=lcm(q,g[k]);int tem=g[i]*g[j]*g[k]*r/q/w/e;if(temmaxx){maxx=tem;a=g[i];b=g[j];c=g[k];}}}}}}coutSolution();return 0;}vector{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0}};int n,k;cinnk;int totalsize=n*n-1;vectorif(s.size()==totalsize){if(i==n-1&&j==n-1){if(ans==""||!lexicographical_compare(ans.begin(),ans.end(),s.begin(),s.end()))ans=s;}return;}int nxt=(g[i][j]+1)%k;for(int u=0;uint x=i+move[u][0];int y=j+move[u][1];if(x=0&&xif(u%2==1){double rx=i+move[u-1][0];double ry=j+move[u-1][1];double lx=i+move[u+1][0];double ly=j+move[u+1][1];double tx=(rx+lx)/2.0;double ty=(ry+ly)/2.0;pairst.insert(insp);vis[x][y]=true;//与下面重复了 char fr='0'+u;string tem=s+fr;dfs(x,y,tem);st.erase(insp);vis[x][y]=false;}}else{vis[x][y]=true;char fr='0'+u;string tem=s+fr;dfs(x,y,tem);vis[x][y]=false;}}}};if(n==1)return "";vis[0][0]=true;dfs(0,0,"");return ans==""?"-1":ans;}//F/*3 30 2 01 1 12 0 2*/int main(){cout1, 1, 0, -1, -1, -1, 0, 1};const int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};// 检查移动是否在边界内bool isValid(int x, int y, int N) { return x = 0 && x