2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

06-02 668阅读

记录刷题的过程、感悟、题解。

希望能帮到,那些与我一同前行的,来自远方的朋友😉


大纲:

 1、握手问题-(解析)-简单组合问题(别人叫她 鸽巢定理)😇,感觉叫高级了

 2、小球反弹-(解析)-简单物理问题,不太容易想

 3、好数-(解析)-简单运用分支计算

 4、R 格式-(解析)-高精度,不是快速幂😉

 5、宝石组合-(解析)-lcm推论(gcd、lcm结合)

 6、数字接龙-(解析)-DFS(蓝桥专属、每年必有一道)

 7、拔河-(解析)-定一端,动一端😎


题目:

1、握手问题

问题描述

小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手 (但这 7 人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?

注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

// 我看大家都叫他鸽巢定理(就是简单的组合问题)

// 其实只需要枚举一下就行了

// 只需要枚举一下就行了

// 举个例子:

// 给所有1~50个人,排一个编号。

// 第50个人,与其他49个人握手,

// 第49个人,与其他48个人握手。(因为第50个人,已经跟他握过了)

// ...

// 第8个人,给其他7个人握手

// 第7个人,就不能跟剩下的6个人握手了(题目:这 7 人彼此之间没有进行握手 )

// 同理,第6个、第5个...

// 因为这个7个人之间,不能相互握手。

#include 
using namespace std;
int main()
{
    int sum=0;
    for(int i=7; ik;
    // 存
    for(int i=0; imatrix[i][j];
        }
    }
    // dfs
    flag = 0;
    visited[0][0]= true;
    if(dfs(0,0)){
        for(int i=0; i=0; --i) A.push_back(str1[i]-'0');
	for(int i=str2.size()-1; i>=0; --i) B.push_back(str2[i]-'0');
	if(!cmp(A,B)) return "-"+sub(str2,str1); // 如果Av2[i];
	return true; 
}
vector sub(vector v1, vector v2){ // v1>=v2 
	vector c;
	int borrow=0; 
	for(int i=0; i=0; --i) B.push_back(str2[i]-'0');
	vector C; // 最后开头可能会产生0 
	vector cur; // 存放
	for(int i=str1.size()-1; i>=0; --i){
		cur.insert(cur.begin(),A[i]);  
		while(cur.size()>1&&cur.back()==0) cur.pop_back(); // 放入 
		int t=0;
		while(cmp(cur,B)){
			cur=sub(cur,B);
			t++;
		}
		C.push_back(t);
	} 
	// 这一步反转很重要
	reverse(C.begin(),C.end()); 
	while(C.size()>1&&C.back()==0) C.pop_back();
	string str=""; 
	for(int i=C.size()-1; i>=0; --i) str+=to_string(C[i]);
	string r="";
	for(int i=cur.size()-1; i>=0; --i) r+=to_string(cur[i]);
	rs=r;
	return str; 
}
int main(){
	// 高精度除数
	string s1="1234";
	string s2="23";
	string remainer; 
	cout
h43、快速幂/h4 p简单复习一下,传送门 :: 快速幂 ::/p pre class="brush:python;toolbar:false"#include iostream using namespace std; int main(){ // 求3^45 int base=3; int exponent=3; int result=1; while(exponent){ if(exponent&1) result*=base; base*=base; exponent>>=1; } cout
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码