2020-05-22 — 习题训练二

Posted pioneerjiesen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-05-22 — 习题训练二相关的知识,希望对你有一定的参考价值。

A题

等比数列求和,直到能整除就行

B题

题意:给出n,找一个长度为n的数组使得前n/2位都是偶数,后n/2位都是奇数,且前后n/2的和相等

思路:两个奇数的和为偶数,如果n/2是奇数,说明有奇数个奇数,他们的和也是奇数,不可能与前面的偶数和相等,此时直接输出NO;当n/2是偶数时,前n/2项输出以2为首项公差是2的等差数列,接下来的n/2-1项输出奇数项,最后一位由计算可知应为3*(n/2)-1。

代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<math.h>
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
	int t;
	ll sum,n,m;
	cin>>t;
	while(t--){
		cin>>n;
		if(n/2%2!=0){
			cout<<"NO"<<endl;
			continue;
		}
		else{
			cout<<"YES"<<endl;
			for(int i=1;i<=n/2;i++){
				cout<<i*2<<" ";
			}
			for(int i=0;i<n/2-1;i++){
				cout<<i*2+1<<" ";
			}
			cout<<3*(n/2)-1<<endl;
		}
	}
	return 0;
}

C题:

题意:找满足a≤x≤b.b≤y≤c.c≤z≤d.的x,y,z使其能构成三角形。

思路:x,y,z由题意知是单调递增的,所以只要使x+y>z,即可构成三角形,所以让x,y取最大值,z取最小值就行了,即输出b,c,c

D题:

题意:有两种打龙方式,一是血量减一半再加10,二是血量减10;只能使用有限次一二技能问能不能杀龙。

思路:分析可得若龙的血量大于20时使用一技能才会掉血。当血量大于20时,先把一技能全部用完,再把二技能全部用完;当血量小于等于20时,把二技能全部用完。最后判断龙的血量。

代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<math.h>
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
	int t,k,b,c,d;
	int sum,n,m;
	cin>>t;
	while(t--){
		cin>>k>>n>>m;
		if(k>20){
			for(int i=0;i<n;i++){
				if(k<20){
					break;
				}
				else{
					k=k/2+10;
				}
			}
			for(int i=0;i<m;i++){
				k-=10;
			}
			if(k<=0){
				cout<<"YES"<<endl;
			}
			else{
				cout<<"NO"<<endl;
			}
		}
		else{
			for(int i=0;i<m;i++){
				k-=10;
			}
			if(k<=0){
				cout<<"YES"<<endl;
			}
			else{
				cout<<"NO"<<endl;
			}
		}
		
	}
	return 0;
}

E题:

题意:A和B两人分n个糖,每人最少一个,且A分得糖的数量要大于B。

思路:分奇偶情况输出就行。如果奇数则输出n/2,如果偶数则输出n/2-1

F题:

题意:给定n,a,b,求长度为n,每a个字母含有b个不同的字母的字符串.

思路:从a开始循环输出b个字母满足题意

代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<math.h>
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
	int t,a,b,c,d;
	int sum,n,m;
	char s;
	cin>>t;
	while(t--){
	 	cin>>n>>a>>b;
		for(int i=0;i<n;i++){
			s=i%b+‘a‘;
			cout << s;
		}
		cout<<endl;
	}
	return 0;
}

以上是关于2020-05-22 — 习题训练二的主要内容,如果未能解决你的问题,请参考以下文章

2020-05-22 — 习题训练二

2020-05-22 — 习题训练二

燧原科技首发国内第二代人工智能训练芯片“邃思2.0”

GauGAN发布第二代!训练超1000万张图片,两个词就能生成风景画

GauGAN发布第二代!训练超1000万张图片,两个词就能生成风景画

OpenGL基础学习之二代码基本结构