从坐牢到入门的程序设计(16)
开始时间2023-07-29 13:53:38
结束时间2023-07-30 01:44:50
前言:今天的目标——结束L1!!!
L1-087 机工士姆斯塔迪奥
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的n、m、q和一系列数组元素的值,该代码将计算满足条件的元素个数,并输出结果。
三、程序设计思路及结构说明
- 定义变量h和l,并初始化为0,用于记录满足条件c为0和1的元素个数。
- 输入n、m、q的值。
- 定义长度为5的整型数组a和b,并初始化为0。
- 定义变量c、d和j,并初始化为0。
- 定义长度为q的整型数组z和x,并定义变量nb并初始化为0。
- 使用循环遍历q次,读取每次的输入值c,并根据条件c的不同进行相应的处理。
- 如果c为0,读取z[i]的值,并通过另一个循环判断z[i]是否与之前的元素重复,如果不重复则增加h的值。
- 如果c为1,读取x[i]的值,并通过另一个循环判断x[i]是否与之前的元素重复,如果不重复则增加l的值。
- 计算sum的值,即(n-h)*(m-l)。
- 使用printf输出sum的值。
- 返回0,表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int h=0,l=0; int n,m,q,i=0; cin>>n>>m>>q; int a[5]={0},b[5]={0}; int c,d,j=0; int z[q],x[q],nb=0; for(i=0;i<q;i++) { nb=0; cin>>c; if(c==0) { scanf("%d",&z[i]); for(j=0;j<i;j++) { if(z[i]==z[j]) { nb=1; } } if(nb!=1) { h++; } } if(c==1) { scanf("%d",&x[i]); for(j=0;j<i-1;j++) { if(x[i]==x[j]) { nb=1; } } if(nb!=1) { l++; } } } long long int sum=0; sum=(n-h)*(m-l); printf("%lld\n",sum); return 0; }
五、题目评分
L1-088 静静的推荐
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的数据,该代码将统计满足条件的人数,并输出结果。
三、程序设计思路及结构说明
- 定义变量n、s、k和长度为300的整型数组a。
- 输入n、k和s的值。
- 定义变量ans,并初始化为0,用于记录满足条件的人数。
- 使用循环遍历n次,读取每次的输入值t和p,并根据条件对其进行判断。
- 如果t大于等于175,根据条件1执行以下操作:
- 如果p大于等于s,根据条件3将ans增加1。
- 否则,根据条件3将对应天梯赛成绩t的人数a[t]增加1。
- 如果t大于等于175,根据条件1执行以下操作:
- 使用循环遍历i从175到290,根据条件2将ans增加min(a[i], k)。
- 使用cout输出ans的值。
- 返回0,表示程序正常结束。
四、程序源代码
#include <bits/stdc++.h> using namespace std; int n,s,k,a[300];//用于记录同一个分数有多少人 int main(){ cin>>n>>k>>s; int ans=0; while(n--){ int t,p; cin>>t>>p; if(t>=175)//根据1,刷掉天梯赛成绩小于175的同学学 { if(p>=s)//根据3,天梯赛>=175&& pat>=s ans++; else//根据3,记录天梯赛成绩为t的同学有多少人 { a[t]++; } } } for(int i=175;i<=290;i++){ ans+=min(a[i],k);//根据2,求出同一个分数段的同学有多少可以录用 } cout<<ans; return 0; }
五、题目评分
L1-089 最好的文档
一、题目编号及题目说明
二、程序功能测试及说明
这段代码非常简单,它只包含一个输出语句。代码的功能是输出一句话。
三、程序设计思路及结构说明
- 使用printf函数输出字符串 "Good code is its own best documentation."。
- 返回0,表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { printf("Good code is its own best documentation.\n"); }
五、题目评分
L1-090 什么是机器学习
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的a和b的值,该代码将计算并输出a1、a2、a3、a4的值。每个结果占一行
三、程序设计思路及结构说明
- 定义变量a、b,并使用cin读取两个整数的值。
- 定义变量a1、a2、a3、a4,并根据给定的公式进行计算。
- a1 = a + b - 16
- a2 = a + b - 3
- a3 = a + b - 1
- a4 = a + b
- 使用printf输出变量a1、a2、a3、a4的值,并使用换行符分隔。
- 返回0,表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int a,b; cin>>a>>b; int a1,a2,a3,a4; a1=a+b-16; a2=a+b-3; a3=a+b-1; a4=a+b; printf("%d\n%d\n%d\n%d",a1,a2,a3,a4); return 0; }
五、题目评分
L1-091 程序员买包子
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的n、x、m和k的值,该代码将根据条件判断,输出相应的结果。结果包括:"mei you mai "、"kan dao le mai "或者 "wang le zhao mai ",然后输出字符串变量x,最后输出字符串 " de"。
三、程序设计思路及结构说明
- 定义变量n、m、k和字符串变量x,并使用cin读取n、x、m和k的值。
- 使用if-else语句进行条件判断:
- 如果k等于n,输出 "mei you mai "。
- 否则,如果k等于m,输出 "kan dao le mai "。
- 否则,输出 "wang le zhao mai "。
- 使用cout输出字符串变量x。
- 使用printf输出字符串 " de\n"。
- 返回0,表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n,m,k; string x; cin>>n>>x>>m>>k; if(k==n) { printf("mei you mai "); } else if(k==m){ printf("kan dao le mai "); } else{ printf("wang le zhao mai "); } cout<<x; printf(" de\n"); }
五、题目评分
L1-092 进化论
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的n以及每组a、b、c的值,该代码将循环执行条件判断,并输出相应的结果:"Lv Yan"、"Tu Dou"或者 "zhe du shi sha ya!"。每行输出一个结果。
三、程序设计思路及结构说明
- 定义变量n,并使用cin读取n的值。
- 定义变量i,并初始化为0。
- 使用for循环,设置循环变量i从0到n-1,每次循环执行以下步骤:
- 定义变量a、b、c,并使用cin读取a、b、c的值。
- 使用if-else语句进行条件判断:
- 如果c等于a乘以b,输出 "Lv Yan"。
- 否则,如果c等于a加b,输出 "Tu Dou"。
- 否则,输出 "zhe du shi sha ya!"。
- 返回0,表示程序正常结束。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int i=0; for(i=0;i<n;i++) { int a,b,c; cin>>a>>b>>c; if(c==(a*b)) { printf("Lv Yan\n"); } else if(c==(a+b)) { printf("Tu Dou\n"); } else{ printf("zhe du shi sha ya!\n"); } } return 0; }
五、题目评分
L1-093 猜帽子游戏
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的n、数组a、k以及每组数组b的值,该代码将循环执行条件判断,并输出相应的结果:"Da Jiang!!!"或者 "Ai Ya"。每行输出一个结果。
三、程序设计思路及结构说明
- 定义变量n,并使用cin读取n的值。
- 创建一个大小为n的vector<int>数组a,并使用for循环将输入的n个整数存入数组a中。
- 定义变量k,并使用cin读取k的值。
- 使用for循环,设置循环变量i从0到k-1,每次循环执行以下步骤:
- 创建一个大小为n的vector<int>数组b。
- 定义变量nb为false,表示是否有不一致的投票结果。
- 定义变量allAbstain为true,表示是否所有人都弃权。
- 使用for循环,设置循环变量j从0到n-1,每次循环执行以下步骤:
- 读取输入的整数,将其存入数组b中。
- 如果b[j]不等于0,则将allAbstain设为false,表示有人投了票。
- 如果b[j]不等于a[j],则将nb设为true,表示有人的投票结果与预期不一致。
- 使用if-else语句进行条件判断:
- 如果nb为false且allAbstain为false,输出 "Da Jiang!!!"。
- 否则,输出 "Ai Ya"。
- 返回0,表示程序正常结束。
四、程序源代码
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int k; cin >> k; for (int i = 0; i < k; i++) { vector<int> b(n); bool nb = false; bool allAbstain = true; for (int j = 0; j < n; j++) { cin >> b[j]; if (b[j] != 0) { allAbstain = false; if (b[j] != a[j]) { nb = true; } } } if (!nb && !allAbstain) { cout << "Da Jiang!!!" << endl; } else { cout << "Ai Ya" << endl; } } return 0; }
五、题目评分
L1-094 剪切粘贴
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的字符串s、整数n以及每组a、b、s1和s2的值,该代码将根据给定的规则对字符串s进行处理,并输出最终结果。
三、程序设计思路及结构说明
- 定义变量s,并使用cin读取字符串s的值。
- 定义变量n,并使用cin读取n的值。
- 定义变量a、b、s1和s2。
- 使用while循环,执行n次,每次循环执行以下步骤:
- 使用cin读取a、b、s1和s2的值。
- 根据给定的a和b,使用substr函数截取出s中的三部分:s3为起始位置到a-1的子串,s4为a到b之间的子串,s5为b之后的子串。
- 将s更新为s3加上s5,表示删除了s中的s4子串。
- 创建变量s6,将s1和s2连接起来。
- 创建变量i和j,并初始化为0。
- 创建变量f,用于标记是否找到匹配。
- 使用while循环遍历字符串s,每次循环执行以下步骤:
- 如果当前字符s[i]等于s6[j],则j加1。
- 否则,j重置为0。
- 如果j等于s6的长度,表示找到了完整的匹配,将f设为1,并跳出循环。
- i加1。
- 如果f为1,表示找到匹配:
- 使用substr函数截取出s中的新三部分:s3为起始位置到i+1-s2的子串,s5为i+1-s2到末尾的子串。
- 将s更新为s3加上s4加上s5,表示将匹配的位置替换为s4。
- 否则,将s更新为s加上s4,表示在s的末尾添加s4。
- 使用cout输出最终的字符串s。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; int n; cin>>n; int a,b; string s1,s2; while(n--) { cin>>a>>b>>s1>>s2; string s3=s.substr(0,a-1); string s4=s.substr(a-1,b-a+1); string s5=s.substr(b); s=s3+s5; string s6=s1+s2; int i=0,j=0; int f=0; while(i<s.size()) { if(s[i]==s6[j]) j++; else j=0; if(j==s6.size()) { f=1; break; } i++; } if(f) { s3=s.substr(0,i+1-s2.size()); s5=s.substr(i+1-s2.size()); s=s3+s4+s5; } else s+=s4; } cout<<s<<endl; }
五、题目评分
L1-095 分寝室
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的整数a、b和n,该代码将寻找满足条件的整数a1和b1,使得a除以a1和b除以b1的商的绝对值之差最小,并输出结果。如果没有满足条件的解,则输出"No Solution"。
三、程序设计思路及结构说明
- 定义变量a、b、n,并使用cin分别读取a、b和n的值。
- 定义变量a1和b1,并初始化为-1。
- 定义变量mn,并初始化为一个较大的值1000000,用来记录当前最小的绝对值之差。
- 使用for循环,遍历变量i从1到n-1,每次循环执行以下步骤:
- 计算变量j的值,即n-i。
- 检查以下三个条件:
- a不等于i,且a能被i整除,b能被j整除,同时b不等于j;
- 如果满足上述条件,则计算变量aa和bb的值,分别为a除以i和b除以j的商。
- 计算变量res的值,为aa和bb之差的绝对值。
- 如果当前的mn大于res,更新mn、a1和b1的值为res、i和j。
- 如果a1和b1仍然等于-1,表示没有找到满足条件的解,输出"No Solution"。
- 否则,输出a1和b1的值。
- 返回0,表示程序执行完毕。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int a,b,n;cin>>a>>b>>n; int a1=-1,b1=-1,mn=1000000; for(int i=1;i<=n-1;i++) { int j=n-i; if(a!=i && a%i==0 && b%j==0 &&b!=j) { int aa=a/i,bb=b/j,res=abs(aa-bb); if(mn>res) a1=i,b1=j,mn=res; } } if(a1==-1 && b1==-1) cout<<"No Solution"; else cout<<a1<<" "<<b1; return 0; }
五、题目评分
L1-096 谁管谁叫爹
一、题目编号及题目说明
二、程序功能测试及说明
根据输入的整数n和每组a、b的值,该代码将比较每组整数a和b的各位数字之和,并根据比较结果输出字符"A"或"B"。
三、程序设计思路及结构说明
- 定义变量n,并使用cin读取n的值。
- 使用while循环,执行n次,每次循环执行以下步骤:
- 定义变量sum1和sum2,并初始化为0,用来记录a和b的各位数字之和。
- 使用cin读取a和b的值。
- 定义变量a1和a2,并分别将a和b的值赋给它们,用于后续比较。
- 使用while循环,计算a和b的各位数字之和,每次循环执行以下步骤:
- 将a的个位数字加到sum1上,并将a除以10。
- 将b的个位数字加到sum2上,并将b除以10。
- 比较sum1和sum2的值:
- 如果a1能被sum2整除且a2不能被sum1整除,则输出"A"。
- 如果a2能被sum1整除且a1不能被sum2整除,则输出"B"。
- 否则,比较a1和a2的值:
- 如果a1大于a2,则输出"A"。
- 如果a2大于a1,则输出"B"。
- 返回0,表示程序执行完毕。
四、程序源代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int sum1,sum2; int a,b; while(n--) {sum1=0,sum2=0; cin>>a>>b; int a1,a2; a1=a,a2=b; while(a){sum1+=a%10;a/=10;} while(b){sum2+=b%10;b/=10;} if(a1%sum2==0&&a2%sum1!=0) printf("A\n"); else if(a2%sum1==0&&a1%sum2!=0) printf("B\n"); else{if(a1>a2)printf("A\n"); else if(a2>a1)printf("B\n"); } } }