【LGR-166-Div.4】洛谷入门赛17
【LGR-166-Div.4】洛谷入门赛 #17
这次是div4的难度,整体不算是很难,很适合小白玩家
[10 月入门赛-A] 食堂
题目描述
为了给师生提供良好的用餐体验,洛谷小学的食堂坚持现炒、现做每一道菜肴。
洛谷小学一共有
- 一名学生,一次用餐需要
克米饭, 克蔬菜, 克肉。 - 一名老师,一次用餐需要
克米饭, 克蔬菜, 克肉。
洛谷小学的食堂一天需要烹制两餐,分别为中午一餐、晚上一餐。其中,中午的一餐,学生和老师都需要,而晚上的一餐仅有老师需要。
现在请问,洛谷小学的食堂,一天要准备多少克米饭,多少克蔬菜,多少克肉呢?
输入格式
输入一行,五个正整数
输出格式
输出一行,三个正整数,分别表示洛谷小学的食堂一天要准备多少克米饭,多少克蔬菜,多少克肉。
样例 #1
样例输入 #1
5 10 200 100 150
样例输出 #1
6000 4000 6000
样例 #2
样例输入 #2
15 120 150 200 180
样例输出 #2
27000 42000 37800
提示
【样例解释】
对于样例
- 一个学生一餐吃
克米饭。因此需要准备: 克米饭。 - 一个学生一餐吃
克蔬菜。因此需要准备: 克蔬菜。 - 一个学生一餐吃
克肉,因此需要准备: 克肉。
因此,输出
【数据范围】
对于所有数据,保证:
思路:
基本上就是一个比较简单的模拟,读懂题意就可以做了
代码:
#include<bits/stdc++.h>
using namespace std;
void solve(){
int a,b,r,v,m;
cin>>a>>b>>r>>v>>m;
r=r*b+r*2*a*2;
v=v*b+v*3*a*2;
m=m*b+m*3*a*2;
cout<<r<<" "<<v<<" "<<m<<endl;
return ;
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
[10 月入门赛-B] 数学选择题
题目描述
洛谷小学的数学考试由若干道选择题组成。选择题分为三档:简单题、中等题和困难题。每类题目都有评判标准:
- 简单题:回答正确得
分,回答错误则不得分; - 困难题:回答正确得
分,回答错误倒扣 分;
洛谷小学不鼓励学生为了做困难题而忽视基础,因此,如果简单题得到的总分,不超过给定的分值限制
现在给定试卷中简单题的题数
输入格式
输入一行,五个正整数
输出格式
输出一行一个整数,表示小 A 最终能获得几分。
样例 #1
样例输入 #1
10 5 7 4 30
样例输出 #1
95
样例 #2
样例输入 #2
10 5 7 4 40
样例输出 #2
15
样例 #3
样例输入 #3
10 5 7 1 40
样例输出 #3
0
提示
【样例解释】
- 对于样例
,小 A 做对了 道简单题获得了 分,超过了给定的 分限制,因此会正常计算困难题的得分。小 A 做对了 个困难题获得 分,但是错了一道要倒扣 分,因此合计为 分。 - 对于样例
,小 A 做对了 道简单题获得了 分,并未超过给定的阈值 ,因此只计算做错困难题的倒扣分,合计为 分。 - 对于样例
,与样例 一样,只计算做错困难题的倒扣分。小 A 只做对了 个困难题,要倒扣 分。此时小 A 累计的得分小于 ,则按照 分作为最后的分值。
【数据范围】
对于所有数据,保证:
思路:
也是一个比较简单的模拟,理清楚思路即可顺利解决
代码:
#include<bits/stdc++.h>
using namespace std;
void solve(){
int a,b,c,d,m;
cin>>a>>b>>c>>d>>m;
// int ans=0;
int res=c*5;
if(res<=m){
res-=(b-d)*20;
if(res<=0){
cout<<0<<endl;
return ;
}
else{
cout<<res<<endl;
return ;
}
}
else{
res+=d*20-(b-d)*20;
if(res<=0){
cout<<0<<endl;
return ;
}
else{
cout<<res<<endl;
return ;
}
}
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
[10 月入门赛-C] 风球
题目背景
与中国大陆不同,当台风即将来袭时,香港天文台将会根据情况发布
题目描述
香港天文台选定了
- 因为已经受到台风影响,因此必然会发布
号戒备信号; - 若有
个气象站的持续风力达到或超过 千米/小时,则发布 号强风信号; - 若有
个气象站的持续风力达到或超过 千米/小时,则发布 号烈风信号; - 若有
个气象站的持续风力达到或超过 千米/小时,则发布 号飓风信号; - 多个条件同时满足,则发布其中最高等级的信号。
现在给定这些气象站的风力数据,请计算出香港天文台应当发布什么警告信号。
输入格式
输入共一行,用空格隔开的
输出格式
输出一行一个正整数,表示应当发布哪一个等级的警告信号。
样例 #1
样例输入 #1
126 75 94 57 53 81 50 48
样例输出 #1
10
样例 #2
样例输入 #2
76 40 49 36 26 42 27 26
样例输出 #2
1
样例 #3
样例输入 #3
99 83 96 54 63 59 45 55
样例输出 #3
8
提示
【样例解释】
第一组样例中,第一个气象观测站观测到了超过
第二组样例中,只有
第三组样例中,恰好有
【数据范围】
对于所有风速观测数据
思路:
这也是模拟题,只要不满足那三种情况直接输出1就好了
代码:
#include<bits/stdc++.h>
using namespace std;
void solve(){
int ans1,ans2,ans3;
ans1=ans2=ans3=0;
for(int i=1;i<=8;i++){
int a;
cin>>a;
if(a>=41){
ans1++;
}
if(a>=63){
ans2++;
}
if(a>=118){
ans3++;
}
}
if(ans3>=1){
cout<<10<<endl;
return ;
}
if(ans2>=4){
cout<<8<<endl;
return ;
}
if(ans1>=4){
cout<<3<<endl;
return ;
}
else{
cout<<1<<endl;
return ;
}
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
[10 月入门赛-D] 画图练习
题目描述
为了培养学生的兴趣,洛谷小学的信息课上会教学生使用绘板软件,让学生在电脑上自由创作图画。
小 A 非常喜欢字符画。他打算在课上创作一幅自己的字符画。他的字符画一共有
- 第
行的非空格的字符有 个; - 第
行以大写的第 个英语字母开头。每一列用其前一非空格列的字母的下一个填充。特别地,Z 的下一个字母是 A。 - 如果当前列数加上当前本应填充的字母的 ASCII 码不为质数,则跳过该列(用空格填充),直到列数加上本应填充的字母的 ASCII 码为质数为止。
请绘画出小 A 的字符画。
输入格式
输入一个正整数
输出格式
输出
样例 #1
样例输入 #1
3
样例输出 #1
A
B CD E
CD E F G H IJ K
样例 #2
样例输入 #2
6
样例输出 #2
A
B CD E
CD E F G H IJ K
DE F G H I JK LM N O P QR S
EF G H I J KL MN O P Q RS TU V W X Y Z A B C
FG H I J K LM NO P Q R ST UV W X Y ZAB C D E F GH IJ KL M N O
提示
【样例解释】
对于样例
-
第一行应当以第一个大写字母,即 A 开头。但是 A 的 ASCII 码是
,加上列数 ,为 ,其并不是质数( ),因此第一列为空。而第二列, ,为质数,因此在第二列输出 A。此时已经输出了 个字母,故换行。 -
第二行应当以第二个大写字母,即 B 开头。B 的 ASCII 码是
,加上列数 ,为 ,为质数。因此第一列就输出 B。随后应当输出下一个英语字母 C。C 的 ASCII 码为 ,加上列数 ,为 ,不为质数,用空格跳过。而直到第四列, 为质数,因此在第四列输出 C。同理,在第五列输出 D,在第 列输出 E。
对于样例
- 该样例的第五第六行体现了 Z 的下一个字母是 A。
【数据范围】
对于所有数据,
思路:
简单的模拟,记住Z后面还是A就好了,也就是说需要做一个取模运算,一开始我以为是两个数互质,没有读懂题,后来才发现是两个数的和是质数。
代码:
#include<bits/stdc++.h>
using namespace std;
bool prime(int x){
if(x==1||x==0){
return 0;
}
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
return 0;
}
}
return 1;
}
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
char a='A'+(i-1)%26;
int k=1;
for(int j=1;j<=i*i;){
if(prime(a+k)==1){
cout<<a;
if(a=='Z'){
a='A';
}
else{
a++;
}
// if(a=='Z')
j++;
}
else{
cout<<" ";
}
k++;
}
cout<<endl;
}
return ;
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
[语言月赛 202311] 基因
题目描述
有一个长度为
小 A 将
对于两个字符串
- 定义
与 , 与 为可以配对的字母。 - 如果
与 为可以配对的字母,那么该字符串的稳定性增加 。 - 如果
或者 中任意一方出现非 的字母,则整个字符串的稳定性将直接为 。
现在给定
输入格式
第一行输入一个正整数
- 第一行输入一个正整数
,表示字符串的长度; - 第二行输入一个字符串
,表示该字符串。
输出格式
对于每个字符串,输出一行一个整数,表示若用其翻转再进行配对,其稳定性将如何。
样例 #1
样例输入 #1
3
5
ATCGT
6
ACATGT
5
ATCGU
样例输出 #1
6
21
0
提示
【样例解释】
- 对于第一个字符串,
, 。标红色的一组与蓝色的一组为可以配对的字母。它们分别是 的第 个字母和第 个字母,因此稳定性是 。 - 对于第二个字符串,
, ,每个对应位置上的字母都可以配对,因此稳定性是 - 对于第三条字符串,出现了非
的字母 ,因此稳定性为 。
【数据范围】
对于所有数据,保证:
思路:
可以考虑使用map对字符进行一下哈希,这样我们就可以保证其有对应关系,我们可以使用字符串反转函数进行反转,之前一直没注意本题的数据范围大小是需要开long long的
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){
int n=0;
// mp['A']=mp['T']=1;
// mp['C']=mp['G']=2;
std::map<char, int> mp;
cin>>n;
string s="";
cin>>s;
s=" "+s;
n+=1;
// cout<<s<<endl;
mp['A']=mp['T']=1;
mp['C']=mp['G']=2;
ll res=0;
for(int i=1;i<n;i++){
if(s[i]!='A'&&s[i]!='T'&&s[i]!='C'&&s[i]!='G'){
cout<<0<<endl;
return ;
}
}
string s1=s;
// cout<<s1<<endl;
// cout<<s<<endl;
reverse(s.begin(),s.end());
// cout<<s<<endl;
s=" "+s;
for(int i=1;i<n;i++){
if(mp[s[i]]==mp[s1[i]]&&s[i]!=s1[i]){
// cout<<i<<endl;
res+=i;
}
}
cout<<res<<endl;
return ;
}
int main(){
int t=1;
cin>>t;
while(t--){
solve();
}
return 0;
}
[语言月赛 202311] 式神考核
题目背景
作为隙间妖怪的式神的式神,橙自然需要接受蓝的考核。源于八云紫的严格要求被蓝带给了橙喵。橙喵在考核中不仅要接受精神的摧残,也要经历肉体的考验,以此得到启发,成为动物妖怪中首屈一指的存在。
题目描述
蓝给橙喵的考核题一共有
在橙喵完成了所有的考核之后,蓝给出了未得到满分的题目数量
橙喵被难住了,因此找到了你,希望你写一个程序帮帮她。
可以证明的是,在这样的规则和数据范围下,答案是唯一的。
输入格式
一行三个整数
输出格式
蓝希望你按照 pA(+B) fC lD
的格式给出可能的答案,其中
样例 #1
样例输入 #1
1475 9909870 16
样例输出 #1
p1459(+1396) f5 l11
提示
【样例解释】
一共有
【数据范围】
对于
代码:
#include<bits/stdc++.h>
using namespace std;
void solve(){
int n,s,m;
cin>>n>>s>>m;
int a,b,c,d;
double ans=1.0*10000000/n;
double ans1=ans*(n-m);
for(int i=0;i<=m;i++){
double res=ans1+1.0/2*ans*i;
if(floor(res)<=s&&s<=floor(res+(n-m))){
cout<<"p"<<n-m<<"(+"<<ceil(s-res)<<") f"<<i<<" l"<<m-i<<endl;
return ;
}
}
a=n-m;
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
[语言月赛 202311] 表格处理
题目描述
小 A 有一张
对于一个
- 将奇数列的每个数加上其右侧相邻的数,之后删除所有的偶数列,给每一列重新编号为第
列; - 将奇数行的每个数加上其下侧相邻的数,之后删除所有的偶数行,给每一行重新编号为第
行;
对于一个
- 对于所有的
,令 ;
小 A 想要知道经过这样两次操作后表格会是什么样的。请输出该表格。
本题的输入输出规模较大,特别是对使用 Java/Python 等非传统语言的选手,请使用相对快速的输入输出方式。
输入格式
第一行输入两个正整数
第二行到第
输出格式
输出一个
样例 #1
样例输入 #1
2 2
2 7 1 8
1 8 2 8
3 1 4 1
5 9 2 6
样例输出 #1
18 18
19 13
样例 #2
样例输入 #2
3 3
6 2 3 5 3 2
1 3 1 4 5 2
7 8 7 8 5 6
2 8 3 6 4 8
9 2 1 8 7 5
4 2 4 3 5 1
样例输出 #2
12 25 17
13 24 16
12 23 18
提示
【样例解释】
对于样例一给出的表格,其是经过这些变换得到的:
【数据范围】
对于所有数据,保证:
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=2010;
int a[N][N];
int b[N][N];
void solve(){
int n,m;
cin>>n>>m;
for(int i=1;i<=2*n;i++){
for(int j=1;j<=2*m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=2*n;i+=2){
for(int j=1;j<=2*m;j+=2){
b[i/2+1][j/2+1]=a[i][j]+a[i+1][j]+a[i][j+1]+a[i+1][j+1];
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cout<<b[j][i]<<" ";
}
cout<<endl;
}
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
[语言月赛 202311] 方程求解
题目描述
小 A 有
2x+4=10
-3x+13=10
4x-8=16
其中,第一组方程的解为
小 A 想要知道,给定
输入格式
第一行输入两个正整数
第二行开始,往下
第
输出格式
对于每次询问,输出一行一个整数,表示有多少个在
样例 #1
样例输入 #1
3 4
2x+4=10
-3x+13=10
4x-8=16
1 6
1 8
3 6
4 5
样例输出 #1
3
3
2
0
样例 #2
样例输入 #2
5 3
5x-2=13
8x+5=45
4x-12=8
-2x+10=4
3x-7=2
1 3
1 5
3 5
样例输出 #2
1
2
2
提示
【样例解释】
对于第一组样例,即为题目中的举例。三组方程的解分别为
- 对于
的范围,有 个 的取值( )是其中至少一个方程的解; - 对于
的范围,同上所述; - 对于
的范围,有 个 的取值( )是其中至少一个方程的解; - 对于
的范围,不存在一个 是其中至少一个方程的解; - 因此分别输出
。
对于第二组样例,五组方程的解分别为
- 对于
的范围,只有 满足是其中至少一个方程的解; - 对于
的范围,有 个 的取值( )是其中至少一个方程的解; - 对于
的范围,有 个 的取值( )是其中至少一个方程的解; - 因此分别输出
。
【数据范围】
数据保证,
本题前八个测试点每个测试点 8 分,后四个测试点每个测试点 9 分。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
//int cnt[N];
int a1[N];
void solve(){
int a,b,c;
// char d;
int n,m;
set<int> s;
s.clear();
cin>>n>>m;
for(int i=1;i<=n;i++){
scanf("%dx%d=%d",&a,&b,&c);
int x=(c-b)/a;
// cnt[x]++;
// a[i]=x;
s.insert(x);
}
int l=0;
for (auto iter = s.begin(); iter != s.end(); ++iter) {
// cout << *iter << endl;
a1[l++]= *iter;
}
a1[l++]=0x3f3f3f;
a1[l++]=-0x3f3f3f;
sort(a1,a1+l);
while(m--){
int l1,r1;
// int ans=0;
cin>>l1>>r1;
auto lt=lower_bound(a1,a1+l,l1);
auto rt=upper_bound(a1,a1+l,r1);
cout<<rt-lt<<endl;
}
// while(m--){
// int l,r,ans=0;
// cin>>l>>r;
// for(int i=l;i<=r;i++){
// if(cnt[i]>0){
// ans++;
// }
// }
// cout<<ans<<endl;
//
// }
}
int main(){
int t=1;
while(t--){
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?