蓝桥杯大赛 ——首场算法团队战 补题

比赛链接:蓝桥杯大赛 ——首场算法团队战 - 蓝桥云课

A 不同角度

思路: 

  在字符串后面加一个'0'即可,但是特殊的“0”的话直接输出"1"即可。

AC代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
	int t;
	cin >> t;
	while (t--){
		string aa;
		cin >> aa;
		if (aa == "0")aa = "1";
		else aa += '0';
		cout << aa << endl;
	}
}
signed main(){
	solve();
	return 0;
}

 

B 摆放显示器

思路:

    话不多说看图:

  

AC代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
	int t;
	cin >> t;
	while (t--){
		int n,m,k;
		cin >> n >> m >> k;
		if (n < k || m < k)cout << 0 << endl;
		else if (n == k && m >= k){
			cout << m / k << endl;
		}
		else if (m == k && n >= k){
			cout << n / k << endl;
		}
		else if (n == k && m == k){
			cout << 1 << endl;
		}
		else {
			cout << (n - k) / k * 2 + (m - k) / k * 2 << endl;
		}
	}
}
signed main(){
	solve();
	return 0;
}

 

D 小学生的账号密码【算法赛】

思路:

先将所有的询问,统计出来,在根据每个数字被问到的次数计算,出现的次数就是10的次方。

AC代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
int pw(int n,int x,int mod){
	n = n % mod;
	int ans = 1;
	while (x > 0){
		if (x & 1)ans = n * ans % mod;
		x >>= 1;
		n = n * n % mod;
	}
	return ans % mod;
}
void solve(){
	int n,q;
	cin >> n >> q;
	vector<int> aa;
	for (int i = 1;i <= n;i++){
		int num;
		cin >> num;
		aa.push_back(num);
	}
	map<int,int>mp;
	while (q--){
		int k;
		cin >> k;
		mp[k]++;
	}
	for (auto &c : mp) {
		for (int i = c.first;i <= n;i += c.first){
			aa[i - 1]= aa[i - 1] * pw(10,c.second,24) % 24;
		}
	}
	for (int i = 0;i < aa.size();i++){
		cout << aa[i] << ' ';
	}
}
signed main(){
	solve();
	return 0;
}

 

posted @ 2024-11-02 19:34  xiyangdaxia  阅读(36)  评论(0)    收藏  举报