码迷,mamicode.com
首页 > 其他好文 > 详细

2020-05-22 — 习题训练二

时间:2020-05-25 12:07:39      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:else   训练   i++   思路   str   code   turn   大于   数组   

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 — 习题训练二

标签:else   训练   i++   思路   str   code   turn   大于   数组   

原文地址:https://www.cnblogs.com/pioneerjiesen/p/12955929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!