洛谷-入门3-循环结构3
P5724 【深基4.习5】求极差 / 最大跨度值 / 最大值和最小值的差
题目描述
给出 n 和 n 个整数 ai,求这 n 个整数中的极差是什么。极差的意思是一组数中的最大值减去最小值的差。
输入格式
第一行输入一个正整数 n,表示整数个数。
第二行输入 n 个整数 a1,a2…an,以空格隔开。
输出格式
输出一个整数,表示这 n 个整数的极差。
输入输出样例
输入 #1复制
6 4 1 5 1 4 1
输出 #1复制
4
说明/提示
数据保证,1≤n≤100,0≤ai≤1000。
实现代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
cout<<a[n]-a[1];
return 0;
}
P1420 最长连号
题目描述
输入长度为 n 的一个正整数序列,要求输出序列中最长连号的长度。
连号指在序列中,从小到大的连续自然数。
输入格式
第一行,一个整数 n。
第二行,n 个整数 ai,之间用空格隔开。
输出格式
一个数,最长连号的长度。
输入输出样例
输入 #1复制
10 1 5 6 2 3 4 5 6 8 9
输出 #1复制
5
说明/提示
数据规模与约定
对于 100% 的数据,保证 1≤n≤104,1≤ai≤109。
实现代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
int main(){
int n,sum=0,cnt=1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]-a[i-1]!=1){
cnt=max(cnt,sum);
sum=0;
}
sum++;
}
cout<<max(cnt,sum);
return 0;
}
P1075 [NOIP 2012 普及组] 质因数分解
题目描述
已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
输入一个正整数 n。
输出格式
输出一个正整数 p,即较大的那个质数。
输入输出样例
输入 #1复制
21
输出 #1复制
7
说明/提示
1≤n≤2×109
NOIP 2012 普及组 第一题
实现代码:
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
struct node{
int id;
int c,m;
int sum,cnt;
};
node a[N];
int n;
int fun(int x){
for(int i=2;i*i<=x;i++){
if(x%i==0){
return 0;
}
}
return 1;
}
int main(){
cin>>n;
for(int i=2;i<=n;i++){
if(fun(i)==1&&n%i==0&&fun(n/i)==1){
cout<<n/i;
return 0;
}
}
return 0;
}
P5725 【深基4.习8】求三角形
题目描述
模仿例题,打印出不同方向的正方形,然后打印三角形矩阵。中间有个空行。
输入格式
输入矩阵的规模,不超过 9。
输出格式
输出矩形和三角形。
输入输出样例
输入 #1复制
4
输出 #1复制
01020304
05060708
09101112
13141516
01
0203
040506
07080910
实现代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
int main(){
int n;
cin>>n;
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cnt++;
if(cnt<=9){
cout<<"0"<<cnt;
}
else cout<<cnt;
}
cout<<endl;
}
cout<<endl;
int sum=0;
for(int i=1;i<=n;i++){
for(int j=2*n-1;j>=2*i;j--){
cout<<" ";
}
for(int j=1;j<=i;j++){
sum++;
if(sum<=9){
cout<<"0"<<sum;
}
else cout<<sum;
}
cout<<endl;
}
return 0;
}
P5726 【深基4.习9】打分
题目描述
现在有 n(n≤1000) 位评委给选手打分,分值从 0 到 10。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 2 位小数。
输入格式
第一行输入一个正整数 n,表示有 n 个评委。
第二行输入 n 个整数,第 i 个整数表示第 i 个评委打出的分值。
输出格式
输出一行一个两位小数,表示选手的最后得分。
输入输出样例
输入 #1复制
5 9 5 6 8 9
输出 #1复制
7.67
说明/提示
数据保证,3≤n≤1000,每个评委打出的分值为 0 到 10(含 0 与 10)之间的整数。
实现代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
int main(){
int n;
cin>>n;
double sum=0;
int t,minn=11,maxx=0;
for(int i=1;i<=n;i++){
cin>>t;
maxx=max(maxx,t);
minn=min(minn,t);
sum+=t;
}
printf("%.2lf",(sum-minn-maxx)/(n-2));
return 0;
}
P4956 [COCI 2017/2018 #6] Davor
题目描述
成功征服南极后,Davor 正在为新的挑战做准备。接下来是前往西伯利亚、格陵兰和挪威的北极探险。他将于 2018 年 12 月 31 日开始旅行,并需要在此之前筹集 N 库纳(克罗地亚货币)。为此,他决定每周一存入 X(X≤100) 库纳到他的旅行基金中,每周二存入 X+K 库纳,每周三存入 X+2×K 库纳,依此类推,直到周日,他将存入 X+6×K 库纳。这样,他将在 52 周内筹集资金,从 2018 年 1 月 1 日(星期一)开始,直到 2018 年 12 月 30 日(星期日)为止。
如果我们知道金额 N,输出值 X 和 K,以便可以在给定的时间范围内收集到准确的金额。解决方案总是存在的,如果有多个,输出 X 最大且 K 最小的那个。
输入格式
输入的第一行包含整数 N(1456≤N≤145600),这是任务中的数字。
输出格式
输出的第一行必须包含 X 的值 (0<X≤100),第二行包含 K 的值 (K>0)。
显示翻译
题意翻译
输入输出样例
输入 #1复制
1456
输出 #1复制
1 1
输入 #2复制
6188
输出 #2复制
14 1
输入 #3复制
40404
输出 #3复制
99 4
说明/提示
题面翻译由 ChatGPT-4o 提供。
实现代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
int main(){
int n;
cin>>n;
n=n/364;
for(int i=1;i<=n/3;i++){
if(n-3*i<=100){
cout<<n-3*i<<endl;
cout<<i;
return 0;
}
}
return 0;
}
P1089 [NOIP 2004 提高组] 津津的储蓄计划
津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300 元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。
为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上 20% 还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 100 元或恰好 100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
例如 11月初津津手中还有 83 元,妈妈给了津津 300 元。津津预计11月的花销是 180 元,那么她就会在妈妈那里存 200 元,自己留下 183 元。到了 11 月月末,津津手中会剩下 3 元钱。
津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。
现在请你根据 2004 年 1 月到 12 月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到 2004 年年末,妈妈将津津平常存的钱加上 20% 还给津津之后,津津手中会有多少钱。
输入格式
12 行数据,每行包含一个小于 350 的非负整数,分别表示 1 月到 12 月津津的预算。
输出格式
一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出 −X,X 表示出现这种情况的第一个月;否则输出到 2004 年年末津津手中会有多少钱。
注意,洛谷不需要进行文件输入输出,而是标准输入输出。
输入输出样例
输入 #1复制
290 230 280 200 300 170 340 50 90 80 200 60
输出 #1复制
-7
输入 #2复制
290 230 280 200 300 170 330 50 90 80 200 60
输出 #2复制
1580
实现代码:
#include<bits/stdc++.h>
using namespace std;
long long a[100000];
int main(){
int n;
int sum=0;
int cnt=0;
for(int i=1;i<=12;i++){
sum+=300;
cin>>n;
sum-=n;
if(sum>=100){
int x=sum/100;
cnt+=x*100;
sum=sum-x*100;
}
else if(sum<0){
cout<<"-"<<i;
return 0;
}
}
cout<<cnt*(1.2)+sum;
return 0;
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)