首页 > 编程语言 >团体程序设计天梯赛-练习集 (L1-001 - L1-012)

团体程序设计天梯赛-练习集 (L1-001 - L1-012)

时间:2024-04-04 11:33:40浏览次数:11  
标签:int L1 样例 001 012 str printf FM

天梯赛题解合集
团体程序设计天梯赛-练习集 (L1-001 - L1-012)
团体程序设计天梯赛-练习集 (L1-013 - L1-024)
团体程序设计天梯赛-练习集 (L1-025 - L1-036)
团体程序设计天梯赛-练习集 (L1-037 - L1-048)

L1-001 Hello World 输出题

image-20240401160349856

样例

输入


输出

Hello World!

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

int main(){
	cout<<"Hello World!"<<endl;
	return 0;
} 

L1-002 打印沙漏 模拟

bjdaM4.png

样例

输入

19 *

输出

*****
 ***
  *
 ***
*****
2

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

const int N=30;
int a[N],sum[N];
int i,j,n,id;
char c;

int main(){
	//初始化
	a[1]=1,a[2]=6;
	for(i=3;i<=25;i++) a[i]=a[i-1]+4;
	sum[1]=1;
	for(i=2;i<=25;i++) sum[i]=sum[i-1]+a[i];
	//计算
	scanf("%d %c",&n,&c);
	for(i=1;i<=25;i++) if(sum[i]>n) break;
	id=i-1;
	//打印
	for(i=id;i>=1;i--){//上半部分  
		//空格 
		for(j=id-i;j>0;j--) printf(" ");
		//字符 
		for(j=0;j<i*2-1;j++) printf("%c",c);
		cout<<endl;
	} 
	for(i=2;i<=id;i++){//下半部分 
		//空格 
		for(j=id-i;j>0;j--) printf(" ");
		//字符 
		for(j=0;j<i*2-1;j++) printf("%c",c);
		cout<<endl;
	} 
	printf("%d\n",n-sum[id]);
}

L1-003 个位数统计 模拟

image-20240401160143345

样例

输入

100311

输出

0:2
1:3
3:1

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

string str;
int num[15];

int main(){
    cin>>str;
    for(int i=0; i<str.size();i++) num[str[i]-'0']++;
    for(int i=0;i<10;i++) if(num[i])
        cout<<i<<":"<<num[i]<<endl;
	return 0;
}

L1-004 计算摄氏温度 模拟

image-20240401160016826

样例

输入

150

输出

Celsius = 65

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

int f,ans;

int main(){
	scanf("%d",&f); // 输入华氏温度
	ans=5*(f-32)/9;  // 转换为摄氏温度
	printf("Celsius = %d\n",ans);
	return 0;
}

L1-005 考试座位号 模拟

image-20240401155523223

样例

输入

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

输出

3310120150912002 2
3310120150912119 1

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

const int N=1005;
long long n,m,zkz,sj,ks;
long long dis[N*2];

int main(){
	scanf("%lld",&n); // 学生个数
	while(n--){
		scanf("%lld%lld%lld",&zkz,&sj,&ks); // 一个考生的信息:准考证号 试机座位号 考试座位号
		dis[sj]=ks;
		dis[sj+N]=zkz;	
	}
	scanf("%lld",&m);
	while(m--){
		scanf("%lld",&sj);
		printf("%lld %lld\n",dis[sj+N],dis[sj]);
	}
	return 0;
}

L1-006 连续因子 模拟

样例

bjwUtP.png

输入

630

输出

3
5*6*7

思路

找到一个数的最长连续因子区间

Ac代码

#include<bits/stdc++.h>
using namespace std;

long long n,m;
long long ansl=1,ansr=1,p,q;

int main(){
	scanf("%lld",&n); // 正整数 N
	for(p=2;p<=sqrt(n);p++){ // 暴力求解
		m=n,q=p;
		while(m%q==0){
			m/=q;
			q++;
		}
		if(ansr-ansl<q-p) ansl=p,ansr=q; // 更新最长连续因子
	}
	if(ansr-ansl>0){
		printf("%lld\n",ansr-ansl);
		for(p=ansl;p<ansr;p++){
			printf("%lld",p);
			if(p==ansr-1) printf("\n");
			else printf("*");
		}
	}
	else cout<<"1"<<endl<<n;
	return 0;
}

L1-007 念数字 模拟

image-20240401154148495

样例

输入

-600

输出

-600

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

string str;
int i;

int main(){
	getline(cin,str);
	for(i=0;i<str.size();i++){
		if(i>0) printf(" ");
		if(str[i]=='-') printf("fu");
		if(str[i]=='0') printf("ling");
		if(str[i]=='1') printf("yi");
		if(str[i]=='2') printf("er");
		if(str[i]=='3') printf("san");
		if(str[i]=='4') printf("si");
		if(str[i]=='5') printf("wu");
		if(str[i]=='6') printf("liu");
		if(str[i]=='7') printf("qi");
		if(str[i]=='8') printf("ba");
		if(str[i]=='9') printf("jiu");
	}
	cout<<endl;
	return 0;
}

L1-008 求整数段和 模拟

image-20240401153612413

样例

输入

-3 8

输出

   -3   -2   -1    0    1
    2    3    4    5    6
    7    8
Sum = 30

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

const int N=1005;
int a,b,k,sum=0;

int main(){
	scanf("%d%d",&a,&b);
	k=1;
	for(int i=a;i<=b;i++){ // 顺序输出从A到B的所有整数
		printf("%5d",i); // 每个数字占5个字符宽度
		if(k%5==0) printf("\n"); // 每5个数字占一行
		k++;
		sum+=i;
	}
	if((k-1)%5!=0) printf("\n"); 最后一行没满5个也换行
	printf("Sum = %d\n",sum);
	return 0;
}

L1-009 N个数求和 gcd

image-20240401152916406

样例

样例1:

输入

5
2/5 4/15 1/30 -2/60 8/3

输出

3 1/3

样例2:

输入

2
4/3 2/3

输出

2

样例3:

输入

3
1/3 -1/6 1/8

输出

7/24

思路

模拟手算,利用__gcd计算最大公约数

Ac代码

#include<bits/stdc++.h>
using namespace std;

int n,fz,fm,FZ=0,FM=1,g;

int main(){
	scanf("%d",&n); // 有理数个数
	while(n--){
		scanf("%d/%d",&fz,&fm); // 有理数的分子和分母
		g=__gcd(FM,fm);
		FZ=(FZ*fm+FM*fz)/g; // 计算和的分子
		FM=FM*fm/g; // // 计算和的分母
	}
	if(FZ%FM==0) printf("%d\n",FZ/FM); // 没有分数部分
	else {
		g=FZ/FM;
		FZ=FZ%FM;
		if (g>0) printf("%d %d/%d\n",g,FZ/__gcd(FZ,FM),FM/__gcd(FZ,FM));
		else printf("%d/%d\n",FZ/__gcd(FZ,FM),FM/__gcd(FZ,FM));
	}
	return 0;
}

L1-010 比较大小

image-20240401152635688

样例

输入

4 2 8

输出

2->4->8

思路

按照题面模拟即可

Ac代码

#include<bits/stdc++.h>
using namespace std;

const int N=1005;
int a,b,c,minn,maxx;

int main(){
	scanf("%d%d%d",&a,&b,&c);
	minn=min(a,(min(b,c)));
	maxx=max(a,(max(b,c)));
	printf("%d->%d->%d\n",minn,a+b+c-minn-maxx,maxx);
	return 0;
}

L1-011 A-B STL-string

bjDGm4.png

样例

输入

I love GPLT!  It's a fun game!
aeiou

输出

I lv GPLT!  It's  fn gm!

思路

从A中删除B中字符,输出A,遍历找到相同字符就删除,string的erase()函数,之后的字符会覆盖被删除的字符,用下标访问时需要注意

Ac代码

#include<bits/stdc++.h>
using namespace std;

string s1,s2;
int i,j;

int main(){
	getline(cin,s1);
	getline(cin,s2);
	for(i=0;i<s2.size();i++)		//遍历s2 
		for(j=0;j<s1.size();j++)	//遍历s1 
			while(s1[j]==s2[i])		//删除s1中和s2相同的数据 
				s1.erase(j,1);
	cout<<s1<<endl;
	return 0;
}

L1-012 计算指数 快速幂

image-20240401151830853

样例

输入

5

输出

2^5 = 32

思路

image-20240401151804069

Ac代码

#include<bits/stdc++.h>
using namespace std;

int n,ans,base=2;

int main(){
	scanf("%d",&n);
	printf("2^%d = ",n);
	ans=1;
	while(n){ // 快速幂
		if(n%2) ans*=base;
		base*=base;
		n/=2;
	}
	printf("%d\n",ans);
	return 0;
}

标签:int,L1,样例,001,012,str,printf,FM
From: https://blog.csdn.net/weixin_45741872/article/details/137236798

相关文章

  • P1077 [NOIP2012 普及组] 摆花
    题目:链接:https://www.luogu.com.cn/problem/P1077总的来说就是和上题差不多?记dp[i][j]为前i种花塞进了j的背包的种类,那么状态转移方程:就是:dp[i][j]=dp[i-1][j]+dp[i-1]j-k贴代码:#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<ss......
  • 宁波ISO27001认证:信息安全管理的黄金标准
    ......
  • 宁波ISO45001认证费用
    宁波ISO45001认证费用......
  • L3-001 凑零钱
    一道很简单的DFS。#include<bits/stdc++.h>usingnamespacestd;intn,m,a[10010];vector<int>res;voiddfs(intstart,intown){ for(inti=start;i<n;i++){ if(own+a[i]>m)return; elseif(own+a[i]==m){ res.push_back(a[i]); intflag=0;......
  • L1-002 打印沙漏
    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印*****************所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个......
  • L1-048 矩阵A乘以B
    给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra​行、Ca​列,B有Rb​行、Cb​列,则只有Ca​与Rb​相等时,两个矩阵才能相乘。输入格式:输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给......
  • L1-096 谁管谁叫爹
    int类型最多表示的21亿,这个题int就可以。#include<bits/stdc++.h>usingnamespacestd;intgetSum(inta){ intres=0; while(a){ res+=a%10; a/=10; } returnres;}intmain(){ intn; cin>>n; while(n--){ inta,b; cin>>a>>b; ints1......
  • L1-095 分寝室
    暴力枚举。#include<bits/stdc++.h>usingnamespacestd;constintinf=0x3f3f3f3f;intres1,res2;intmain(){ inta,b,c;//女生男生寝室数 cin>>a>>b>>c; intminsub=inf; for(inti=2;i<a;i++){//i表示女生几人间 if(a%i==0&&c-a......
  • L1-094 剪切粘贴
    这个题目是stl的使用和字符串拼接。java里头substring是从首部到尾部的位置,但是C++里面substr是首部位置,和要截取的长度。我算这种经常出错,每次都搞得很晕。#include<bits/stdc++.h>usingnamespacestd;stringcs;intmain(){ cin>>cs; intcnt; cin>>cnt; while......
  • 深入学习MySQL1——体系结构、常见引擎、索引
    MySQL体系结构连接层:提供一些mysql的数据连接对象、用户校验、权限认证等服务服务层:在本层实现了一些核心功能,如SQL接口,缓存查询(8.0之后的版本已取消该功能)、SQL分析和优化,部分内置函数的执行。所有的跨存储引擎的功能都在这一层实现,如:过程、函数等。在该层,服务器会解析查询并......